본문 바로가기
프로그래밍/기타

[REST API] SOAP와 REST API의 비교

by 사바라다 2019. 10. 4.

웹개발을 하다보면 한번쯤은 마주치는 주제입니다. SOAP는 무엇이고, REST와는 어떤 차이가 있을까요? 오늘은 이 주제에 대해서 한번 알아보도록 하겠습니다.

개론

  • SOAP는 Simple Object Access Protocol의 약자이며 일반적으로 XML 형식을 사용하는 기 정의되어있는 형식을 사용하는 Protocol입니다.
  • REST는 REpresentational State Transfer의 약자이며 표준을 정의하지 않는 아키텍처 스타일입니다. 일반적으로 JSON이 많이사용되지만, XML, YAML 등 protocol을 강제하지 않습니다.

2가지 모두 SOA(Service oriented Architecture)를 목적으로 합니다. 그렇다면 공통점과 차이점을 알아보도록 하겠습니다.

공통점

  • 기본 프로토콜
    • SOAP는 HTTP 프로토콜을 기본으로 개발되어집니다.
    • REST는 HTTP 프로토콜을 사용한다고 명시되어져 있지 않지만 묵시적으로 HTTP 프로토콜을 주로 사용합니다.

차이점

  • 데이터 포맷
    • SOAP는 일반적으로 XML, Json을 사용하여 데이터를 교환합니다. 또한 javascript를 통한 web service로 통신을 진행합니다.
    • REST는 사용자가 필요한 format으로 주고 받고 할 수 있도록 합니다. 하지만 주로 json을 사용합니다.
  •  상태비저장(Stateless)
    • SOAP 또한 기본적으로는 stateless입니다. 하지만 SOAP는 Session등을 이용하여 stateful을 쉽게 지원합니다.
    • RESTful은 stateless를 강조합니다. 상태의 관리는 전적으로 client에게 위임합니다. 여기서 말하는 상태는 Application State로 Client에서 이전에 어떤 명령을 했는지 기억하는 것을 말합니다. 자세한 내용은 사이트를 참고하세요.
  • HTTP Method 사용
    • SOAP는 기본적으로 POST만을 이용하여 CRUD를 처리하며, 리소스를 가져올 때는 GET을 사용하기도 합니다.
    • REST는 HTTP, GET, POST, PUT, DELETE, PATCH method 등 적극적으로 사용합니다.
  •  캐싱
    • SOAP는 POST를 사용할 때 기본적으로 body의 해석이 필요합니다. 따라서 body를 분석하여 캐시의 유무를 선택적으로 적용해야하기 때문에 캐시 구현이 상대적으로 어렵습니다.
    • REST는 리소스를 얻어올 때 GET Method를 주로 이용하며, URI, query의 정보로 데이터를 가져옵니다. URI만으로 전체 해석이 가능하기 때문에 캐시 사용을 쉽게 HTTP level에서 정의할 수 있습니다.
  •  security
    • SOAP는 표준화 되어진 기준을 제공하고 있습니다. 구현하기도 쉽고 많은 경우를 포함하고 있습니다.
    • REST는 일반적으로 client 쪽에 정보를 맡기기 때문에 상대적으로 취약합니다. 대표적으로 사용하는 방식은 jwt(json web token) 방식을 사용합니다. 또한 표준화된 security가 아직 미흡하다고 합니다.

마무리

이렇게 SOAP와 REST의 차이점에 대해서 알아보았습니다. 사실 지금 REST API에 대해서 연재를 진행하고 있지만 무조건 REST가 SOAP의 상위호환이다? 이런건 아닙니다. 확실히 REST가 SOAP보다 확장성도 높고 빠르게 개발할 수 있습니다. 하지만 그렇기 때문에 보안성도 떨어질 수 있으며 형식에 구애 받지 않기 때문에 생기는 문제도 분명히 있을 수 있습니다. 본인이 참여하고 있는 프로젝트의 비지니스에 따라 적절히 사용하는게 제일 좋을 것이라 생각합니다.

감사합니다.

참조

https://restfulapi.net/soap-vs-rest-apis/

댓글