본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/xml

[Soap] soap 통신 개발하기 [1] 통신 사이클 이해하기

by 미노드 2023. 6. 9.

Soap 통신은 WebService의 일종으로써 TCP / IP를 통해 통신한다.
HTTP 클라이언트는 HTTP 서버에 TCP 접속을 사용한다.
접속이 확립 된 후에, 클라이언트는 서버로 HTTP 요청 메시지를 전송할 수있다 :

그렇다면 이 과정에서 Soap 통신을 개발하기위해 Soap 통신 사이클을 먼저 알아야 한다.
soap 관련 업무를 진행하며 내가 경험한 사이클은 다음과 같다.

1. soap 전문 작성
2. http 바인드 후 서버에 요청(POST)
3. 응답 받은 soap 전문 확인
4. 응답 코드 / response 결과에 따라 성공/실패 처리
5. 1~4 과정 로깅 및 추적기능 활성화

더욱 추가적인 처리 과정들이 있으나, 통신관련 사이클만 정리하자면 이렇다.

이과정들을 수행할 수 있어야 내가 원하는 데이터를 상대방 서버에 전달하거나,
원하는 데이터를 응답 받아올 수 있다.

위 과정에서 Soap 형식 이다보니 개발 가이드를 wsdl 하나로 보내주는게 대부분이었다.
어떻게보면 Soap의 장점일 수 있다.
wsdl은 서버 측에서 제공하는 xml 파일이며, 이 파일에 어떤 형식으로 Soap전문을 작성해야 하는지 프레임과 규칙이 다 들어있다.

----------------------------------------------------------------------------------------------
wsdl파일만 있으면 Soap 전문을 만들 수 있는 java Project를 알아서 생성해주는 도구도 있으며
그 외에도 wsdl을 해석해 Soap 메시지 프레임을 xml 형식으로 만들어주는 기능도 있다.
다만 비즈니스마다 추가적인 요청들이 다양하기에 별도 개발가이드 문서 참고가 필수적인 경우가 많았다만, 일반적인 통신은 wsdl만 가지고도 구현이 가능하다.
-----------------------------------------------------------------------------------------

wsdl에 대해선 다음 포스팅에서 계속하기로 하자.
어쨋든, Soap 형식을 이해하지 못하면 Soap 통신을 하는데 있어 이해가 안가는 부분이 많다.
애초부터 복잡한 구조를 띠다보니, 개발이 쉬운편은 아니라고 생각한다.
그러니 Soap 전문이 만들어졋다고 가정하고, 통신 사이클부터 익히는게 이해에 도움이 된다.
1. soap 전문 작성wsdl을 기반으로 Soap 전문에 들어갈 내용을 만든다.
완성된 전문 데이터가 있다 이제.

2. http 바인드 후 서버에 요청(POST)

거의 Web Service에서 사용하는 방식이며, tcp/ip 기반 통신이 대부분이다.
요청할 서버의 uri에는 버전정보 등 선언하는 operation 명, 버전명이 들어있다.(operation명 중요)
해당 uri에 post형식으로 bind해서 요청한다.

이 과정에서 인증이 필요할 수도 있는데, password인증이나 key 인증을 쓰기도 한다.

3. 응답 받은 soap 전문 확인

서버에선 wsdl에 들어있는 xsd 스키마를 기반으로 Soap 전문 안에 있는 데이터의 정합성을 테스트한다.
xsd에 기재된 형식에 맞게 들어왔는지 알아서 체크하고 맞지 않다면 fault를 낸다.
알맞게 들어왓다면 약속된 결과(response)를 줄 것이다.

4. 응답 코드 / response 결과에 따라 성공/실패 처리

받은 response는 Soap형식(XML)으로 되어있어, 클라이언트가 알아볼 수 있도록 풀어서 분석해야 한다.
이 과정에서 결과가 원하는 값이 나왔는지 안왔는지 에 따라 로직을 수행한다.

5. 1~4 과정 로깅 및 추적기능 활성화

각 과정에서 로깅 작업을 추가하여 제대로 통신이 성공했는지,
데이터가 잘못 들어온게 아닌지 확인을 해야 한다.
연습할때는 이런 부분을 신경 쓰지 않고 구현만 하면 되겠지만, 실무에선 이부분이 중요하다.
데이터의 유실이 생길 경우 복원을 해야하는데, 이 로깅으로 복원할 수도 있었다.

Soap 을 활용한 통신은 크게 이런 과정이었다.

상세적인 구현은 원하는데로 하면 되겠지만, 그 과정에서 wsdl과 xsd는 상당히 낫선 부분들이며, 이해하는것도 복잡했다.
잘 쓰이지 않는 기술인데, 그러다보니 제대로된 포스팅도 찾을 수 없었고,
결국 기술문서 원문 파해쳐가며 공부하는데, 이걸 굳이 해야되나 싶기도 하다.
Soap 사라졋으면 하면서 다음포스팅을 준비함.