웹 서비스 인터페이스: SOAP와 REST 비교 분석 - 정처기 실기 대비
요약
정보처리기사 실기 시험의 핵심 주제인 웹 서비스 인터페이스 방식의 두 가지 흐름, SOAP과 REST를 비교 분석합니다. SOAP, WSDL, UDDI 삼총사와 현대적인 REST 아키텍처의 차이점을 알아보고 실기 대비 문제로 마무리합니다.
💡 웹 서비스 인터페이스 방식의 역사와 각 기술의 역할을 이해하는 것은 정처기 실기 시험의 중요 포인트입니다. 이 포스트에서는 클래식한 방식의 대표주자인 SOAP과 현대적인 REST를 비교하며 그 차이를 명확히 알아봅니다.
🏛️ 웹 서비스 인터페이스: 두 가지 접근법
웹 서비스는 서로 다른 시스템이 인터넷을 통해 상호작용하는 방식입니다. 이 상호작용을 위한 인터페이스에는 크게 두 가지 주요 흐름이 있습니다. 하나는 모든 것을 명시적으로 정의하는 **클래식 스택(SOAP, WSDL, UDDI)**이고, 다른 하나는 웹의 방식을 그대로 따르는 **현대적 스타일(REST)**입니다.
레스토랑을 예약하고 주문하는 과정에 비유해 보겠습니다.
1. 클래식 웹 서비스 삼총사: SOAP, WSDL, UDDI
2000년대 초반, 기업들은 안정적이고 정형화된 시스템 연동을 위해 이 세 가지 기술을 하나의 세트로 사용했습니다. 이들의 목표는 "어떤 서비스가 어디에 있는지 찾고(UDDI), 그 서비스의 사용법을 명세서로 확인한 뒤(WSDL), 정해진 약속대로 통신(SOAP)한다" 입니다.
UDDI (Universal Description, Discovery, and Integration)
- 역할: 웹 서비스의 '전화번호부' 또는 '레스토랑 가이드북'
- 설명: 어떤 레스토랑(서비스)이 어디에 있는지, 어떤 종류의 음식을 파는지 찾아보는 검색 엔진 역할을 합니다. 지금은 거의 사용되지 않습니다.
WSDL (Web Services Description Language)
- 역할: 서비스의 '상세 메뉴판' 또는 '사용 설명서'
- 설명: UDDI로 찾은 레스토랑의 상세 메뉴판입니다. 어떤 요리(메서드)가 있고, 각 요리의 가격(파라미터)은 얼마이며, 주문 시 어떤 정보(데이터 타입)를 알려줘야 하는지 아주 상세하게 XML 형식으로 적혀 있습니다.
SOAP (Simple Object Access Protocol)
- 역할: 정해진 양식에 따른 '격식 있는 주문서'
- 설명: WSDL 메뉴판을 보고, 정해진 양식에 맞춰 아주 격식있게 주문(요청)하는 것입니다. "이 주문서는 SOAP 규격에 따라 작성되었으며..." 와 같이 매우 엄격한 XML 메시지를 사용합니다.
요약: 클래식 방식은 마치 처음 가는 도시에 가서, 가이드북(UDDI)으로 레스토랑을 찾고, 두꺼운 메뉴판(WSDL)을 정독한 뒤, 격식있는 주문서(SOAP)를 작성해서 내는 것과 같습니다. 절차는 복잡하지만 매우 명확하고 안정적입니다.
2. 현대적 웹 API의 주역: REST
SOAP 방식의 복잡성에 대한 반작용으로, 더 단순하고 웹 친화적인 REST(Representational State Transfer) 스타일이 등장하여 현재 웹 API의 주류가 되었습니다.
- 역할: 웹의 기본 원리(HTTP)를 최대한 활용하는 '설계 철학'
- 설명:
- 별도의 가이드북(UDDI)이 필요 없습니다. 레스토랑의 주소(URI)는 이미 알 있다고 가정합니다. (예:
https://example.com/dishes/pasta
) - 두꺼운 메뉴판(WSDL)도 필요 없습니다. "메뉴 좀 보여주세요(
GET
)"라고 말하면 메뉴를 보여주고, "이걸로 주문할게요(POST
)"라고 말하는 등, **모두가 아는 간단한 행동(HTTP 메서드)**으로 통신합니다. - 복잡한 주문서(SOAP) 대신, 간단한 **메모(주로 JSON)**에 적어 요청합니다.
- 별도의 가이드북(UDDI)이 필요 없습니다. 레스토랑의 주소(URI)는 이미 알 있다고 가정합니다. (예:
요약: REST 방식은 마치 단골 식당에 가서, 말 몇 마디로 편하게 주문하는 것과 같습니다. 훨씬 빠르고, 유연하며, 배우기 쉽습니다.
📊 SOAP 기반 방식 vs REST 스타일 비교
구분 | SOAP, WSDL, UDDI 스택 | REST 스타일 |
---|---|---|
개념 | 프로토콜 (Protocol): 엄격한 규칙 | 아키텍처 스타일 (Style): 유연한 원칙 |
데이터 형식 | XML만 사용 | JSON, XML 등 자유롭게 사용 (주로 JSON) |
통신 방식 | HTTP 외 다른 프로토콜도 사용 가능 | HTTP 위에서만 동작 (HTTP 기능 극대화) |
복잡성 | 높음 (WSDL, 스키마 등 필요) | 낮음 (HTTP와 URI만 알면 됨) |
성능 | 상대적으로 느리고 무거움 | 빠르고 가벼움 |
주 사용처 | 높은 보안/트랜잭션이 필요한 기업용 시스템 | 대부분의 공개 API, 모바일 앱, 웹 서비스 |
📝 정처기 실기 대비 문제
문제 | 웹 서비스의 명세, 즉 서비스가 제공하는 기능, 파라미터, 데이터 타입 등을 XML 형식으로 상세하게 기술하는 언어는 무엇인가? |
답변 | |
정답 | 정답 보기 |
문제 | HTTP, SMTP 등 위에서 XML 기반의 메시지를 교환하여 원격 프로시저를 호출하는, 매우 엄격한 규칙을 가진 프로토콜은 무엇인가? |
답변 | |
정답 | 정답 보기 |
문제 | URI를 통해 자원을 식별하고, HTTP 메서드를 통해 해당 자원에 대한 행위를 표현하는 원칙을 기반으로 하는 소프트웨어 아키텍처 스타일은 무엇인가? |
답변 | |
정답 | 정답 보기 |
문제 | 과거 웹 서비스를 검색하고 등록하기 위해 사용되었던, 웹 서비스의 '전화번호부' 역할을 했던 기술은 무엇인가? |
답변 | |
정답 | 정답 보기 |
문제 | SOAP과 비교했을 때, REST가 가지는 주요 장점으로 더 가볍고 빠른 데이터 교환 가능하게 하는 주된 데이터 형식은 무엇인가? |
답변 | |
정답 | 정답 보기 |