mingming

REST API와 SOAP 본문

카테고리 없음

REST API와 SOAP

mingming_96 2025. 9. 20. 21:14

REST API와 SOAP: 역사, 개념, 특징, 그리고 차이점

API는 오늘날 소프트웨어 개발에서 빠질 수 없는 핵심 요소입니다. 그중에서도 가장 많이 비교되는 두 가지 방식이 바로 SOAPREST입니다. 이번 글에서는 두 방식의 역사와 개념, 특징을 살펴보고 어떤 차이가 있는지 정리해 보겠습니다.

1. API 역사 속 SOAP과 REST의 등장

SOAP의 등장

SOAP(Simple Object Access Protocol)은 1998년 Microsoft와 IBM을 중심으로 등장했습니다.
당시에는 기업 시스템 간 연동이 중요한 시대였고, 서로 다른 플랫폼(Java, .NET, C++ 등)을 사용하는 환경에서도 안정적이고 신뢰성 있는 통신 방식이 필요했습니다.

SOAP은 이러한 요구를 충족하기 위해 만들어졌으며, 보안(WS-Security), 트랜잭션 보장 같은 기능이 내장되어 있어 은행·정부·대기업의 엔터프라이즈 시스템에서 널리 사용되었습니다.

REST의 등장

REST(Representational State Transfer)는 2000년 Roy Fielding(HTTP 프로토콜 공동 설계자)의 박사 논문에서 처음 제시되었습니다.
SOAP의 복잡성과 무거움을 극복하기 위해, 웹 친화적이고 단순한 아키텍처 스타일을 제안한 것입니다.

REST는 이후 웹 2.0 시대와 모바일 서비스 확산과 함께 급속히 자리잡았고, JSON 기반 응답을 활용하며 현재는 인터넷 서비스의 표준 API로 자리매김했습니다.

2. SOAP API 개념과 특징

SOAP은 XML 기반 메시징 프로토콜로, 엄격한 표준화를 통해 다양한 환경에서 일관된 통신을 제공합니다.

  • 데이터 포맷: XML 고정
  • API 정의: WSDL(Web Services Description Language)로 인터페이스 정의
  • 프로토콜 지원: HTTP뿐 아니라 SMTP, TCP 등 다양한 프로토콜 사용 가능
  • 특징:
    • WS-Security, 트랜잭션 보장 등 고급 기능 내장
    • 엔터프라이즈 환경에서 안정성과 보안성이 뛰어남
    • 무거운 이유:
      • XML 기반 메시지는 구조가 복잡하고, 네임스페이스·태그가 많아 데이터 크기가 커짐
      • SOAP 헤더, WS-Security, 트랜잭션 관련 정보가 포함되어 요청/응답 메시지가 커짐
      • 여러 프로토콜과 기능을 지원하다 보니 처리 로직이 복잡하고 서버 부담 증가

SOAP 요청/응답 예시

<!-- SOAP 요청 -->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:usr="http://example.com/user">
   <soapenv:Header/>
   <soapenv:Body>
      <usr:GetUser>
         <usr:UserId>123</usr:UserId>
      </usr:GetUser>
   </soapenv:Body>
</soapenv:Envelope>
<!-- SOAP 응답 -->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <GetUserResponse>
         <User>
            <Id>123</Id>
            <Name>홍길동</Name>
            <Email>hong@example.com</Email>
         </User>
      </GetUserResponse>
   </soapenv:Body>
</soapenv:Envelope>

3. REST API 개념과 특징

REST는 웹의 설계 원칙을 따른 아키텍처 스타일로, 가볍고 단순한 접근 방식을 제공합니다.

  • 데이터 포맷: JSON, XML, YAML 등 자유롭게 선택 가능 (JSON이 주류)
  • 리소스 표현: URL로 리소스 식별 (/users/1)
  • HTTP 메서드 활용: GET, POST, PUT, DELETE 등 표준 메서드 사용
  • 특징:
    • Stateless 구조 (서버가 클라이언트 상태를 기억하지 않음)
    • 단순하고 빠르며, 웹·모바일 환경에 최적화
    • 경량화된 이유:
      • JSON 사용으로 데이터 구조가 간단하고 용량이 작음
      • 불필요한 헤더와 기능이 없고, 트랜잭션/보안 관련 정보는 최소화
      • HTTP 표준만 활용해 메시지 처리 로직이 단순

REST 요청/응답 예시

# REST 요청 (GET)
GET /users/123 HTTP/1.1
Host: api.example.com
Accept: application/json
// REST 응답 (JSON)
{
  "id": 123,
  "name": "홍길동",
  "email": "hong@example.com"
}

4. SOAP vs REST 비교

구분SOAPREST
등장 시기1998년 (MS, IBM 주도)2000년 (Roy Fielding 논문)
데이터 포맷XML 고정JSON, XML, YAML 등 자유
프로토콜HTTP, SMTP, TCP 등HTTP 기반
복잡성복잡하고 무겁다단순하고 가볍다
보안/트랜잭션WS-Security, 트랜잭션 지원별도 구현 필요
주 사용처금융, 정부, 대기업 엔터프라이즈웹/모바일, 오픈 API
상태 관리Stateful 가능Stateless 기본 원칙

5. 마무리

SOAP과 REST는 등장 배경부터 철학이 다릅니다.

  • SOAP은 안정성과 보안을 중시하는 엔터프라이즈 환경에서 출발했으며, 오늘날에도 금융·정부 시스템에서는 여전히 사용됩니다.
  • REST는 단순함과 웹 친화성을 무기로 웹·모바일 API 표준으로 자리 잡았고, 현재 대부분의 서비스에서 활용됩니다.

결국 어떤 API를 선택할지는 서비스 환경과 요구사항(보안, 성능, 확장성)에 달려 있습니다.