오늘은 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 방식을 사용합니다.
'[ Concept ]' 카테고리의 다른 글
[ Concept ] 분산 코디네이터 Zookeeper(주키퍼) 알아가기 (0) | 2024.05.20 |
---|---|
[ Concept ] 대용량 / 실시간 데이터 처리를 위한 오픈 소스 (Apache Kafka) (0) | 2024.05.17 |
[ Concept ] Bluetooth UUID (0) | 2023.07.12 |
[ Concept ] ResponseEntity 개념 및 장단점 (0) | 2023.07.11 |
[ Concept ] JWT Token - 개념 및 간단 예제 (1) | 2023.07.10 |