SOAP에서 REST로의 전환

Pure·2025년 5월 24일
1

Spring

목록 보기
3/9
post-thumbnail

🧭 웹 API의 발전: SOAP에서 REST로의 전환

웹 개발이 발전함에 따라 클라이언트와 서버 간의 통신을 위한 방식도 진화해왔습니다. 2000년대 초반까지만 해도 대부분의 시스템은 SOAP(Simple Object Access Protocol) 기반의 API를 사용했지만, 시간이 지나면서 점차 REST(Representational State Transfer) 기반의 API로 전환되었습니다. 이번 글에서는 왜 SOAP에서 REST로 전환되었는지, 둘 사이의 유사점과 차이점에 대해 알아보고, 적용 사례에 대해서도 알아보겠습니다.

1. SOAP(Simple Object Access Protocol)란 무엇인가?

SOAP는 1998년 마이크로소프트와 IBM 주도로 만들어진 XML 기반의 메시징 프로토콜입니다. 이는 네트워크 상에서 통신을 표준화하려는 시도였고, HTTP, SMTP 등 다양한 프로토콜 위에서 작동할 수 있도록 설계되었습니다.

🌐 soap의 특징

1.엄격한 메시지 구조 (WSDL 기반 계약)
2.표준화된 보안, 트랜잭션, 오류 처리
3.XML 기반의 통신 포맷
4.다양한 전송 프로토콜 지원 (HTTP, SMTP 등)

2. REST(Representational State Transfer)란 무엇인가?

REST는 2000년 로이 필딩(Roy Fielding)의 박사 논문에서 처음 정의된 아키텍처 스타일입니다. SOAP처럼 프로토콜이 아닌, 웹의 기본 원리를 활용한 설계 방식입니다.

🌐 REST의 특징:

1.HTTP 프로토콜에 의존 (GET, POST, PUT, DELETE 등)
2.리소스 중심의 URI 설계
3.상태 비저장성(Stateless)
4.JSON 또는 XML 등 유연한 포맷 사용 가능
5.캐시 처리 및 계층화 구조

3. SOAP와 REST의 유사점

애플리케이션을 빌드하려면 다양한 프로그래밍 언어, 아키텍처 및 플랫폼을 사용할 수 있습니다. 데이터 형식이 서로 다르기 때문에 이러한 다양한 기술 간에 데이터를 공유하는 것은 어렵습니다. SOAP와 REST는 모두 이 문제를 해결하기 위해 개발되었습니다.

-둘 다 애플리케이션이 다른 애플리케이션의 데이터 요청을 작성, 처리 및 응답하는 방식에 대한 규칙과 표준을 설명함
-둘 다 표준화된 인터넷 프로토콜인 HTTP를 사용하여 정보를 교환함
-둘 다 안전하고 암호화된 통신을 위해 SSL/TLS를 지원함

4. SOAP와 REST의 차이점

대부분의 레거시 시스템에서 SOAP를 준수하며, REST는 그보다 뒤에 고려하거나 웹 기반 시나리오에서의 더 빠른 대안으로 여기는 경우가 많습니다. REST는 유연한 구현을 제공하는 가이드라인 세트고, SOAP는 XML 메시징과 같은 특정 요건이 있는 프로토콜입니다.

REST API는 경량화되어 있기 때문에 사물 인터넷(IoT), 모바일 애플리케이션 개발, 서버리스(servreless) 컴퓨팅과 같이 보다 새로운 컨텍스트에 이상적입니다. SOAP 웹 서비스는 많은 기업에서 필요로 하는 기본 보안과 트랜잭션 컴플라이언스를 제공하지만, 이로 인해 좀 더 무거운 경향이 있습니다.

항목RESTSOAP
정의API 설계 스타일프로토콜
작성 방식리소스(데이터) 중심으로 묘사행위, 기능 중심으로 서술
전송 데이터⭐️ 여러 가지 형태의 데이터 (HTML, JSON, Text 등)XML 데이터 (고정)
캐시 사용⭐️ 가능, 효율적불가, 비효율적
ACID 특성없음자체 기준 있음

5. REST vs SOAP, 어떤 API를 선택해야 할까?

1. 전체 애플리케이션 설계 방향

현대의 애플리케이션은 빠른 배포, 유연한 아키텍처, 클라우드 친화적 설계를 지향합니다. 특히 모바일 앱, SPA(Single Page Application), 하이브리드 앱 등은 REST API를 통해 더 나은 성능과 확장성을 발휘할 수 있습니다.

REST는 마이크로서비스, 컨테이너 기반 아키텍처(Docker, Kubernetes 등)에 최적화되어 있습니다.

다양한 클라이언트(웹, 모바일 등)와의 호환성이 뛰어나며, JSON 기반의 경량 메시지를 통해 빠른 응답성과 낮은 네트워크 비용을 자랑합니다.

그러나 다음과 같은 경우에는 SOAP이 더 나은 선택이 될 수 있습니다:

1. 기존 시스템이 SOAP API로 구성된 레거시 구조일 경우

2. 이미 구축된 SOAP 웹서비스를 통합하거나 확장해야 하는 경우

이런 상황에서는 기존 SOAP 인프라를 그대로 유지하며 연동하는 것이 시간과 비용 면에서 효율적일 수 있습니다.

2. 보안 요구사항

API의 보안 수준은 용도에 따라 달라집니다.

퍼블릭 API의 경우
누구나 접근 가능한 공개 API는 높은 유연성과 쉬운 접근성이 중요합니다.

이 경우 REST API가 적합합니다. REST는 HTTPS와 OAuth, JWT 등을 통해 충분히 안전하면서도 가볍고 빠른 통신을 제공합니다.

프라이빗 API 또는 기업 내부 시스템의 경우
예를 들어, 기업 내부 회계 시스템이나 정부 규제에 따른 보고 API 등은 엄격한 보안 및 무결성이 필요합니다.

SOAP는 WS-Security, XML Encryption, SAML Token 등 다양한 보안 확장을 공식적으로 지원합니다.

따라서 보안이 최우선인 환경에서는 SOAP이 더 안전한 선택이 될 수 있습니다.

3. 트랜잭션 처리 및 ACID 준수

API 사용자가 트랜잭션 전반에 걸쳐 데이터의 일관성과 무결성을 요구한다면 어떤 방식을 선택해야 할까요?

예시: 금융 시스템의 송금 요청
A → B 계좌로 이체 중 어느 단계에서 오류가 발생하면 전체 요청이 롤백되어야 합니다.

이때 중요한 것은 ACID(원자성, 일관성, 격리성, 지속성)입니다.

SOAP는 이러한 요구사항을 만족시키기 위해 기본적으로 WS-AtomicTransaction 등 트랜잭션 지원 기능을 내장하고 있습니다.

REST는 기본적으로 Stateless하기 때문에 트랜잭션 관리를 직접 지원하지 않으며, 서버 또는 DB에서 추가적인 제어 로직을 구현해야 합니다.

6. 결론

SOAP는 많은 기능과 확장성을 제공했지만, 과도한 복잡성과 무거운 XML 메시지로 인해 개발자들 사이에서 점차 피로도가 쌓였습니다. 이에 비해 REST는 간단하고, 유연하며, HTTP 프로토콜과 자연스럽게 연동되면서 다음과 같은 이유로 널리 채택되기 시작했습니다.
그러나 REST가 SOAP보다 현재 더 인기있고 보편적이라는 이유로 맹목적인 찬양은 지양해야 합니다. 오늘날 대부분의 스타트업과 웹서비스는 RESTful API를 선택하지만, 그 선택은 서비스의 특성과 요구사항에 따라 달라질 수 있다는 점을 기억합시다!

profile
Clean Code를 위한 한 걸음

0개의 댓글