본문 바로가기
[ Concept ]

[ Concept ] SOAP 와 REST API의 장단점 및 비교

by 환이s 2023. 7. 20.
728x90


오늘은 API(응용 프로그램 인터페이스)의 구조 중에서 가장 대표적인 두 가지 방식으로 SOAP와 REST의 개념에 대해 포스팅을 해보겠습니다.

 

사실 두 가지 방식은 비슷하지만, 본질적으로는 서로 다른 기술이면서도 각각의 상황에 맞게 쓰이기 때문에 두 방식의 차이점은 알고 있어야 합니다.

 

먼저 API에 대해서 시작해 보겠습니다.

 

API(Application Programming Interface)

 

API는 응용 프로그램(소프트웨어)과 다른 소프트웨어나 서비스를 연결해 주는 인터페이스를 말합니다. API는 프로그램 간 상호 작용을 도와주며, 서로 다른 시스템이나 플랫폼에서 데이터와 기능을 공유할 수 있게 해 주는데, 주로 웹 서비스, 라이브러리, 운영 체제 등에서 사용됩니다.

 

 

 

API 특징은 다음과 같습니다.

 

  • 기능 제공 : API는 특정 소프트웨어 또는 서비스가 제공하는 기능을 외부의 응용 프로그램에서 활용할 수 있습니다. 이를 통해 다른 프로그램들이 기능을 공유하거나 재사용할 수 있습니다.

 

  • 데이터 교환 : API는 데이터를 주고받기 위한 인터페이스를 제공합니다. 데이터 형식은 주로 XML 또는 JSON과 같은 경량 데이터 형식을 사용하여 교환됩니다.

 

  • 접근 권한 제어 : API를 사용하는 서비스는 보안과 권한 관리를 통해 허용된 사용자만이 API를 사용할 수 있도록 제한할 수 있습니다.

 

  • 문서화 : API는 사용 방법과 기능에 대한 문서화를 제공합니다. 이를 통해 개발자들은 API를 쉽게 이해하고 사용할 수 있습니다.

 

그만큼 API는 다양한 분야에서 사용되고 있고, 대표적으로는 앞서 말씀드린 것처럼 웹 서비스 API , 운영 체제 API, 소프트웨어 라이브러리 API 등이 있습니다.

 

즉, 정리하자면 API는 어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구입니다.

 


SOAP(Simple Object Access Protocol)

 

SOAP은 웹 서비스 간의 통신에 사용되는 프로토콜이며, XML 기반의 메시지 교환 프로토콜입니다. SOAP는 원격 프로시저 호출(RPC)과 같은 방식으로 동작하여 네트워크 상에서 서로 다른 시스템 간에 데이터를 교환하는 데 사용됩니다.

 

주요 특징은 다음과 같습니다.

 

  • XML 기반 메시지 포맷: SOAP 메시지는 텍스트 형식인 XML을 사용하여 데이터를 표현합니다. XML은 플랫폼과 언어에 독립적이며, 데이터를 구조화하고 전송하는 데 효과적입니다.

 

  • 메시지 구조: SOAP 메시지는 크게 두 부분으로 구성됩니다. 첫 번째는 헤더(Header) 부분으로, 메시지에 대한 부가적인 정보를 포함합니다. 두 번째는 바디(Body) 부분으로, 실제 데이터가 포함되어 있습니다.

 

  • 프로토콜 중립성: SOAP는 다양한 프로토콜에 바인딩될 수 있습니다. 주로 HTTP, SMTP, TCP 등과 같은 프로토콜을 사용하여 웹 서비스를 구현하고, 웹 브라우저와 서버 간의 통신에도 사용될 수 있습니다.

 

  • 서비스 기술 설명: 웹 서비스의 기능과 메시지 교환에 대한 자세한 설명은 WSDL(Web Services Description Language)을 사용하여 정의됩니다. WSDL은 SOAP 기반 웹 서비스의 API를 기술하고 클라이언트가 서비스를 호출하는 데 필요한 정보를 제공합니다.

 

  • 보안 기능: SOAP는 WS-Security와 같은 보안 기능을 내장하고 있어, 웹 서비스 간의 통신을 보호하고 데이터의 안전성과 기밀성을 유지할 수 있습니다.

 


REST(Representational State Transfer)

 

REST는 웹 서비스의 아키텍처 스타일 중 하나로, 웹 리소스를 사용하여 클라이언트와 서버 간의 통신을 수행하는 방법을 규정한 아키텍처이며, 네트워크 상에서 분산 시스템과 웹 서비스를 구축하는 데 많이 사용되고 가장 널리 사용되는 웹 서비스 스타일 중 하나입니다.

 

REST의 특징은 다음과 같습니다.

 

  • 리소스 중심 설계: REST는 서비스를 리소스(자원)의 집합으로 모델링합니다. 각 리소스는 고유한 URI(Uniform Resource Identifier)를 갖고 있으며, 이러한 리소스를 사용하여 클라이언트가 정보를 요청하거나 조작합니다.

 

  • HTTP 메서드 활용: REST는 HTTP 프로토콜의 메서드(GET, POST, PUT, DELETE 등)를 사용하여 리소스를 조작합니다. 간단한 CRUD(Create, Read, Update, Delete) 기능을 위해 HTTP 메서드를 활용합니다.

 

  • GET: 리소스를 조회하기 위해 사용됩니다.
    POST: 새로운 리소스를 생성하기 위해 사용됩니다.
    PUT: 기존 리소스를 업데이트(수정) 하기 위해 사용됩니다.
    DELETE: 리소스를 삭제하기 위해 사용됩니다.
    상태 없음(Statelessness): REST는 서버가 클라이언트의 상태를 유지하지 않는 상태 없는(stateless) 통신을 지향합니다. 각 요청은 모두 독립적이며, 이전 요청과 관련성이 없습니다.

 

  • 표현적 상태(Representational State): REST는 리소스의 상태를 표현하는 방식으로 데이터를 주고받습니다. 주로 JSON(JavaScript Object Notation)이나 XML(Extended Markup Language)과 같은 경량의 데이터 형식을 사용합니다.

 

  • 계층 구조: REST 아키텍처는 계층적 구조를 가질 수 있습니다. 이로 인해 서비스의 확장성과 유연성이 높아집니다.

SOAP / REST의 차이점

 

  • SOAP :

 

- SOAP은 다양한 기업 시스템 간의 통합과 데이터 교환에 사용되며, 분산 환경에서 신뢰성과 보안성을 강조하는 상황에서 적합한 웹 서비스 프로토콜로 널리 활용됩니다.

 

그러나 XML의 사용으로 인한 오버헤드와 복잡성 때문에, 간단하고 가벼운 웹 서비스에는 REST와 같은 다른 프로토콜이 선호될 수도 있습니다.

 

  • REST : 

 

- REST의 간결함과 HTTP의 널리 사용되는 메서드를 활용하여 구현이 간단하고 가볍습니다. 이러한 특성으로 인해 REST는 현대적인 웹 서비스의 표준 아키텍처 스타일로 자리 잡았으며, 웹 API, 모바일 애플리케이션, 분산 시스템 등 다양한 분야에서 널리 사용되고 있습니다.

 

단점으로는 SOAP에 비해 보안 기능이 덜 내장되어 있어 추가적인 보안 레이어를 구현해야 할 수도 있습니다. 또한, SOAP처럼 정해진 표준이 없어, 구현 방식에 따라 일관성이 없을 수 있습니다.

 


정리하자면

 

결론적으로, 

SOAP은 보안과 트랜잭션 등의 기능을 위해 복잡한 프로토콜과 메시지를 사용하는 반면,

REST는 단순하고 가벼운 HTTP 기반의 아키텍처로, 대부분의 경우 REST가 더 널리 사용되고 있습니다. 

 

해당 상황과 요구사항에 따라 적합한 아키텍처를 선택해서 사용하시면 됩니다.

 

예시로 회사에서 사용한다고 하면, 가벼운 서비스인 경우 RESTful API를 사용하고, 예약이나 결제 같이 중요한 서비스의 경우 SOAP 방식을 사용합니다. 

728x90