웹 API의 SOAP에서 REST로 전환된 이유

썬쑨·2025년 4월 5일

Spring

목록 보기
5/12

✅ API, 웹 API?

  • API(Application Programming Interface)는 서로 다른 sw간에 상호작용을 가능하게 하는 인터페이스로, 특정 기능이나 데이터를 외부 애플리케이션에서 사용할 수 있도록 제공하는 규약이다.

  • 웹 API는 API의 하위 개념으로, HTTP/HTTPS 프로토콜을 통해 웹 환경에서 클라이언트와 서버 간 상호작용을 가능하게 하는 인터페이스이다.
    - 네트워크를 통해 데이터 요청 및 응답을 주고받는다.
    - RESTful API, SOAP API 등 다양한 아키텍처 스타일로 구현이 가능하다.
    - JSON, XML 등 웹 친화적인 데이터 포맷을 주로 사용한다.

✅ SOAP는 무엇인가?

  • SOAP(Simple Object Access Protocol)은 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하기 위한 통신 프로토콜이다. 주로 웹 서비스에서 사용되며, 클라이언트와 서버 간의 데이터를 안전하게 교환하는 데 활용된다.

<주요 특징>
1. XML 기반: XML 형식으로 작성되어 플랫폼 및 프로그래밍 언어에 독립적이다.
2. 다양한 프로토콜 지원: HTTP, HTTPS, SMTP, FTP 등 여러 네트워크 프로토콜을 통해 메시지를 전송할 수 있다.
3. 원격 프로시저 호출(RPC): 주로 RPC 방식으로 동작하여, 클라이언트가 마치 로컬에서 함수를 호출하듯이 원격 서버의 기능을 요청할 수 있다. 서버는 이 요청을 받아 처리 후, 결과를 XML형식으로 응답한다.

<장점>
1. 플랫폼 및 언어 독립적.
2. 방화벽과 프록시에 구애받지 않고 통신 가능.
3. 보안 표준(WS-Security)을 지원하여 높은 보안성을 제공

✅ SOAP의 한계점

SOAP는 XML 기반의 표준화된 프로토콜이지만, 다음과 같은 복잡성 문제가 있다.

  1. 무거운 메시지 구조 : 모든 데이터 전송을 XML로 해야 했고, 아래처럼 메시지 구조가 매우 복잡하다. 또한 XML 구조가 무거워 응답 속도·트래픽 측면에서 부담이 커질 수 있다.
ex: 간단한 SOAP 요청
<soap:Envelope xmlns:soap="<http://schemas.xmlsoap.org/soap/envelope/>">
  <soap:Body>
    <AddNumbers xmlns="<http://example.org/Calculator>">
      <a>10</a>
      <b>20</b>
    </AddNumbers>
  </soap:Body>
</soap:Envelope>
  1. 높은 진입 장벽 : WSDL(서비스 정의 파일), 스키마 등 사전 학습이 필요하며, 개발 및 유지보수에 시간이 많이 소요된다.
  2. HTTP에 의존하지 않음 : HTTP뿐 아니라 SMTP, TCP 등 다양한 전송 프로토콜 사용한다. -> HTTP 외의 프로토콜도 쓸 수 있도록 설계되어 있기 때문에, 웹 환경과 맞추기 위해서는 별도의 설정이 필요하다.

✅ REST의 탄생

Roy Fielding이 2000년에 제안한 REST(Representational State Transfer)는 웹의 기본 철학인 HTTP를 그대로 활용하면서도, 단순하고 직관적인 방식으로 리소스를 다룰 수 있게 해준 아키텍처 스타일이다.

SOAP 등의 복잡한 XML 기반 표준이 개발자에게 부담을 주던 상황에서, 웹이 가진 본래의 단순하고 확장성 높은 구조(URI, HTTP 메서드, 상태 코드 등)를 적극 활용하는 RESTful 방식이 더 빠르고 유연한 대안으로 주목받게 되었다.

<장점>
1. 간결한 메시지 구조: JSON 기반의 데이터 포맷은 가볍고 가독성이 높아 네트워크 효율성이 뛰어나다.

ex: 간단한 REST 요청
POST /add HTTP/1.1
Content-Type: application/json

{
  "a": 10,
  "b": 20
}

2, 웹 친화적 설계: HTTP 메서드(GET, POST, PUT, DELETE)를 그대로 사용하여 직관적이며 브라우저, curl, Postman 등 다양한 도구로 테스트 가능하다.
3. 확장성과 유연성: 클라이언트와 서버가 명확히 분리되어 있고, 다양한 플랫폼에서 쉽게 통신할 수 있다.

SOAP와 REST는 각 다른 특징과 장단점을 가진 통신 방식이다. 복잡하고 강력한 보안 및 트랜잭션 처리가 필요한 환경에서는 SOAP가 여전히 유용하며, 빠르고 간결한 데이터 교환이 필요한 현대 웹 서비스 환경에서는 REST가 더 널리 사용되고 있다.

무엇이 더 낫냐를 따지기보다는, 서비스의 특성과 요구사항에 따라 적절한 아키텍처 스타일을 선택하는 것이 더 중요하다.


<참고 자료>
https://f-lab.kr/insight/understanding-api-and-web-services
https://faun.pub/rest-vs-soap-9985a793acba
https://jelvix.com/blog/rest-vs-soap

profile
천천히 굴러갑니다!

0개의 댓글