실무적으로 컴퓨터 네트워크 상에서XML 기반 메세지를 교환하는 프로토콜을 사용할 때가 있습니다.
그럴 때 쓰는 것이 SOAP라는 것인데, 그것이 무엇인지 간단하게 알아보는 시간을 가져보도록 하겠습니다.
SOAP란?
Simple Object Access Protocol의 약자로, XML과 HTTP, HTTPS, SMTP 등을 기반으로 다른 컴퓨터에 있는 데이터나 서비스를 호출하기 위한 통신 규약입니다. 이 문장에 SOAP의 핵심이 다 들어있는 것 같네요.
SOAP은 어떻게 사용하나요?
다양한 사용방법 중 한 가지를 예시로 들어보겠습니다. 데이터가 존재하는 DBMS(ORACLE, MYSQL, MSSQL)에 미리 Procedure(
일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합)
를 작성해놓고, 필요한 서버에서 프로시져를 호출하여 결과 값을 XML로 받습니다.
1. 나 -> 원격 DBMS의 프로시져 호출 -> 원격 DBMS (인지!!)
2. 원격 DBMS -> XML데이터 전송 -> 나
SOAP 사용에 대해서 조금 더 예제를 들어주세요!
예를 들면, 연계담당자가 GIVEMEACHOCOLETE(id, count, location)라는 Procedure를
자신들이 관리하는 DBMS에 만들어두었다고 가정하겠습니다.
그럼 저는 GIVEMEACHOCOLETE("성훈매니저", "2개", "서울종로점");
뭐 이렇게 프로시져를 호출하면 되는 것이고 잠시 뒤 XML이 날아옵니다.
추가로 SOAP의 XML은 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있습니다. 「헤더」에는 보안이나 트랜잭션같은 정보들이 있습니다. 「바디」부분은 주요한 정보인 정보가 존재하죠.
SOAP의 단점
위에서 SOAP은 XML에 정보가 담겨져온다고 설명하였습니다.
그렇다면, XML의 단점을 고스란히 가져가겠죠.
XML은 사람이 쉽게 읽을 수 있는 반면, 불필요한 정보가 너무 많아서 처리속도가 늦습니다.
이 포스팅에서 설명하지는 않겠지만, JSON이라는 것을 공부하셨다면 그것이 어떤 의미인지 아실 것입니다.
TIP) REST 연동에 비해 복잡하다고 얘기하는 사람들이 있는데,
REST에 대해서 공부하면 공부할 수록 둘의 난이도는 비슷비슷합니다.
SOAP의 장점
이번엔 장점을 나열할 차례입니다.
1. 프록시와 방화벽에 구애받지 않는다.
- SOAP은 HTTP 위에서 동작한다. HTTP와 같이 프록시와 방화벽에 구애받지 않고 쉽게 통신이 가능하다.
2. SOAP은 융통성있게도 각각 다른 트랜스포트 프로토콜들의 사용을 허용하고 있다.
- SOAP는 HTTP이외에 SMTP도 사용할 수 있다는 의미입니다.
3. SOAP은 전송(Transport) 매체로서 HTTP를 사용하기 때문에 인터넷에서 널리 사용할 수 있다.
- 실제로 SOAP은 인터넷에서 원격 객체를 액세스하기 위해 고안된 프로토콜입니다.
4. 플랫폼 및 프로그래밍 언어에 독립적이다.
- SOAP은 컴포넌트를 활성화하는 방법이나 호출하는 방법에 대해 전혀 관여하지 않으며 이에 대한 상세한 사항은 HTTP Request를 수신하는 수신자에게 위임하고 있다. 따라서 객체지향 기술이나 컴포넌트 기술을 사용하지 않는 애플리케이션일지라도 SOAP을 통해 객체 서비스를 제공하거나 제공받을 수가 있습니다.