RESTful API vs SOAP API

변시윤·2023년 3월 27일
0

CS

목록 보기
2/4

RESTful API

클라이언트와 서버 간의 통신을 위한 아키텍처 스타일로, REST는 Representational State Transfer을 의미한다. HTTP 메소드를 이용해 자원을 처리하며, 자원에 대한 주소를 URI(Uniform Resource Identifier)로 나타낸다. 이때 자원은 서버에서 관리되며, 클라이언트는 자원에 대한 요청을 보내고 서버는 요청에 대한 응답을 보내는 방식으로 동작한다.

장점

  • 호환성
    HTTP 기반이기 때문에 클라이언트와 많은 클라이언트와 서버에서 사용할 수 있다. 또한 서로 다른 플랫폼과 언어를 사용하는 서버와 클라이언트 간의 상호작용도 가능하다.

  • 확장성
    필요한 리소스만 요청할 수 있기 때문에 효율적인 데이터 전송이 가능하다. 또한 캐싱을 통해 서버의 부하를 줄일 수 있다.

  • 가독성
    URI와 HTTP 메소드를 사용하여 요청을 처리하므로 가독성이 뛰어나고, API 변경을 인식하기에 유리하므로 유지보수에 용이하다.

  • 범용성
    다양한 형식의 데이터를 제공한다.

단점

  • 보안
    보안에 취약하기 때문에 데이터를 보호하기 위해 SSL을 사용해야 한다.

  • 제한적인 데이터 처리
    단순한 데이터 처리에는 적합하지만 트랜잭션이나 트랜잭션 롤백처럼 보다 복잡한 작업을 수행하기에는 제한적이다다.

  • URI 길이
    복잡한 계층적 구조를 가질 경우 URI가 길고 복잡해질 수 있다.

  • URI 패턴
    기존에 정의된 URI 패턴이 변경될 경우 호환성 문제가 발생할 수 있다.

  • 데이터 정합성 유지
    일관된 명명 규칙이 없고 각각의 API가 고유한 구현 방법을 갖고 있기 때문에 클라이언트 측에서 데이터 정합성을 유지하지 않으면 데이터 정합성 문제가 발생할 수 있다.

HTTP 메소드의 종류

  • GET
    서버로부터 리소스를 요청하고 해당 리소스를 읽어온다. 데이터를 가져오는 데에만 사용되며 변경하지는 않는다.

  • POST
    서버에 데이터를 제출하여 새로운 리소스를 생성한다. 주로 폼을 작성하거나 파일 업로드 등의 작업에 사용한다.

  • PUT
    업데이트에 해당되며 서버에 있는 특정 리소스를 전체적으로 교체한다. PUT을 사용함연 리소스의 일부만 업데이트를 해야하는 경우에도 클라이언트에서 전체 리소스의 내용을 포함해서 요청해야 한다.

  • PATCH
    마찬가지로 업데이트에 해당되며 리소스의 일부만 수정하도록 요청한다. PATCH 사용시 서버와 클라이언트간의 불필요한 데이터 전송을 줄일 수 있다.

  • DELETE
    서버에 있는 특정 리소스를 삭제한다.


SOAP API

RESTful API와 함께 가장 많이 쓰이는 API의 방식으로 Simple Object Access Protocol의 약자다. 프로토콜 API 형식을 사용한다. 보안, 메시지 전송 면에서 RESTful API보다 복잡하다. 대신 많은 표준 덕분에 보안, 트랜잭션, ACID를 준수해야 하는 서비스에 적합하다. 즉, 웹 서비스에서는 RESTful API 방식이 적합하고, 많은 리소스와 보안 등이 요구되는 기업용 애플리케이션의 경우엔 SOAP API 방식이 적합하다.

장점

  • 다양하고 복잡한 기능 개발
    대량의 데이터 혹은 복잡한 데이터를 처리하는 데 적합하다.

  • 보안
    기본적으로 강력한 보안을 제공하고 WS-Security와 같은 추가 보안 기능도 제공한다.

  • 데이어 정합성 보장
    일관된 명명 규칙을 갖고 있기 때문에 데이터 정합성을 보장할 수 있다.

  • 다양한 프로그래밍 언어와 플랫폼 간의 상호 운용성 제공
    마찬가지로 일관된 명명 규칙 덕분에 서로 다른 플랫폼간 호환성이 높다.

단점

  • 속도
    XML 기반이므로 데이터양이 증가함에 따라 처리 속도가 느려질 수 있다.

  • 제한적인 프로토콜
    HTTP 외에 다른 프로토콜을 지원하지 않는다.

  • 유지 보수
    복잡하고 긴 XML 메시지 구조로 인해 코드를 작성과 디버깅 측면에서 불리하고 유지 보수 및 확장이 어렵다. 또한 RESTful API에 비해 상대적으로 무겁고 느리고 비용이 많이 든다.

  • 브라우저 호환성
    일부 웹 브라우저에서 호출이 불가능하기도 하다.


RESTful API vs SOAP API

-RESTful APISOAP API
유형프로토콜아키텍쳐 스타일
주요 기능구조화 된 정보 전송(기능 위주)리소스에 접근(데이터 위주)
데이터 포맷XMLplain text, HTML, XML, JSON 등
보안WS-Security, SSL 지원SSL, HTTPS 지원
대역폭많은 리소스와 대역폭 필요적은 리소스를 필요로 하며 가벼움
캐시사용 불가사용 가능
페이로드엄격한 통신 규약에 의해 메시지 전송 전 보고 필요보고 불필요
ACID 준수자체 ACID 기준을 통해 데이터 손상 최소화관련 내용 X

이 밖에도 GraphQL, RPC, CORBA, XML-RPC, JSON-RPC, Thrift, gRPC 등의 API 방식이 있다.

profile
개그우먼(개발을 그은성으로 하는 우먼)

0개의 댓글