| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- Kubernetes
- 그라파나 시각화
- blue-green
- grafana on kubernetes
- 솔데스크
- terraform
- helm
- headless service
- AWS 딥레이서
- 딥레이서 보상함수
- 쿠버네티스 컴포넌트
- github action 사용법
- EKS 클러스터
- livenessPorbe
- jenkins
- Aurora cluster
- 딥레이서
- 깃허브 액션
- Firelens
- 메탈LB
- Kubernets on Jenkins
- LoadBalancer Controller
- 로드밸런서 컨트롤러
- SAA 합격 후기
- 쿠버네티스
- Solution Architecture
- 그라파나 대시보드
- EFS CSI Driver
- Prometheus install
- kubernetes 동작 원리
mingming
REST API와 SOAP 본문
REST API와 SOAP: 역사, 개념, 특징, 그리고 차이점
API는 오늘날 소프트웨어 개발에서 빠질 수 없는 핵심 요소입니다. 그중에서도 가장 많이 비교되는 두 가지 방식이 바로 SOAP과 REST입니다. 이번 글에서는 두 방식의 역사와 개념, 특징을 살펴보고 어떤 차이가 있는지 정리해 보겠습니다.
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 비교
| 구분 | SOAP | REST |
|---|---|---|
| 등장 시기 | 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를 선택할지는 서비스 환경과 요구사항(보안, 성능, 확장성)에 달려 있습니다.