API & SOAP가 뭔데?

leny·2022년 1월 6일
0

1일 1네트워크

목록 보기
1/1
post-thumbnail

API의 정의란?

우선, 약자(Abbreviation)에 대해 풀어보는것이 좋을 것 같아, 정의 먼저 간단하게 짚고 넘어가겠다.

"API란?"

애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트로, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface) (X)

근데, 위와 같은 정의는 솔직히 와닿지 않는다. 그리고 사실 나 또한 웹프로그래밍을 했을 때에, API가 어떤 개념인지 직접 익혔으나, 막상 설명하려니 설명이 어려웠다.

그래서 이렇게 쉽게 정의해보았다.

"API란?"

개발자가 직접 프로그램을 만드는데 기능을 구현하지 않고, API 제공자들이 제공하는 데이터와 모듈 등을 갖다가 쓸 수 있게 만든 것이 API와 API 문서 (O)

API 활용 예시

예를 들어서, 내가 라면 사이트를 홍보하려고 라면 사이트를 오픈했다. 여기다가 실시간으로 상담이 가능한, 채널톡이 매우 대표적이라고 볼 수 있다. 채널톡은 별도의 사이트가 있으면 , 홈페이지 상단 혹은 상단에 별도로 갖다가 붙여서 사용하는 형태로 사용이 가능하다.

채널톡 개발자 사이트에 들어가면, 아래 화면과 같이 실제로 api 다운로드가 가능하다.
Json 파일의 형식으로 다운로드가 가능한 모습이다.

그리고, 또한 나만의 랜딩페이지 혹은 사업 웹페이지에서 중간에 구글맵을 보여주고 싶다, 사업장 주소 노출해주고 싶다. 그것 역시 api이다. 예시를 들자면, 아래와 같은 것이 open api라고 볼 수 있다.

참고로 open api에는 구글맵, 카카오맵, 오픈스트리트맵 등이 존재한다.
사실 구글맵이나, 카카오맵같은 경우에는 매우매우 친숙할 것 같으나, 오픈스트리트맵의 경우 좀 처음들어본 사람이 대다수일 것 같아, 아래와 같이
스크린캡쳐화면을 첨부한다.

주의사항

  • 또한,주의해야 할 점 API 가 공개되지 않았다면 쓸 수 없다. 또한, 공개 API라고 하더라도, 호출횟수가 많아지면 비용을 지불해야 할 수 도 있다.

SOAP란?

이러한 Web Application 형태의 API가 확산되자, 정보 교환을 위해 필요한 표준 프로토콜 사양이 개발된 것이다.
SOAP의 약자(Abbreviation)는 Simple Object Access Protocol이다.

웹 형태의 API가 확산 -> 정보교환을 위해 필요한 표준 프로토토콜 사양이 개발됨 = SOAP (Simple Object Access Protocol)

SOAP으로 설계된 API는 XML 메시지 형식을 사용하여, HTTP 또는 SMTP를 통해 요청을 수신한다.
여기서 HTTP 는 웹페이지 전송 프로토콜인 것은 알고 있는데, SMTP는 처음 듣는다. 우선, HTTP/s 와 같이 XML 기반 메세지를 컴퓨터 네트워크 상에서 교환하는 프로토콜과 같은 형태라는 맥락에서 이해하고, 다음에 제대로 정리해보겠다.

위키피디아에서 SOAP 의 정의

API 개념을 정리하다보니, 정말 수많은 프로토콜을 정의하고 공부하게 되는 구나.
IT는 역시나 유기적인 관계에 있는 개념이 많다보니 그런것 같다.

SOAP으로 설계된 API는 XML 메세지 형식을 사용하며 HTTP 또는 STMP를 통해 요청을 수신합니다. SOAP를 사용하다보면, 더 간편한 방법으로 애플리케이션을 다양한 환경에서 실행하거나 다양한 언어로 작성하여 정보를 공유할 수 있습니다.

SOAP(Simple Object Access Protocol) 은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. SOAP에는 몇가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(Remote Procedure Call:RPC) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게 된다. SOAP는 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송(transport)과 상호 중립성(interaction neutrality)의 개념을 가져왔다.

XML은 대다수 회사들과 오픈 소스 개발 진영의 노력에 힘입어 광범위하게 사용되는 메시지 형식이므로 표준으로 선택되었다. 게다가 광범위하게 무료로 사용 가능한 툴이 상당수 포진하고 있는 점은 SOAP-기반 구현으로 옮겨가기 쉽게 하였다. XML의 문법은 다소 긴데, 이에는 장단점이 있다. 사람이 쉽게 읽을 수 있는 반면, 불필요한 정보때문에 처리속도가 늦어질 수 있다. CORBA, GIOP, ICE, DCOM은 이진 메시지 포맷을 사용하므로 전송량이 훨씬 적다. 그러나 XML 메시지 처리는 하드웨어로 빠르게 할 수 있다.[1][2] 이진 XML은 스트리밍 전송에 대한 대안으로 (속도를 높이는 수단으로) 검토되고 있다.

장단점 비교

장점

  • SOAP을 사용한 HTTP는 기존 원격 기술들에 비해서 프록시와 방화벽에 구애받지 않고 쉽게 통신 가능하다.[출처 필요]
  • SOAP은 융통성있게도 각각 다른 트랜스포트 프로토콜들의 사용을 허용하고 있다. 표준 스택에서는 트랜스 포트 프로토콜로 HTTP를 사용하지만, 다른 프로토콜 역시 사용가능 하다.
  • SOAP은 플랫폼 독립적이다.
  • SOAP은 프로그래밍 언어에 독립적이다.
  • SOAP은 확장가능하다.
    분산환경 하에서 정보교환을 하기 위한 하나의 프로토콜인 SOAP은 다음과 같은 장점을 가지고 있다(안현수, 2003).
  1. SOAP은 전송(Transport) 매체로서 HTTP를 사용하기 때문에 인터넷에서 널리 사용할 수 있다. 실제로 SOAP은 인터넷에서 원격 객체를 액세스하기 위해 고안된 프로토콜이다.
  2. SOAP은 HTTP와 XML을 사용하기 때문에 개발도구나 플랫폼에 구애받지 않고 SOAP 서버 혹은 클라이언트를 개발할 수 있다. 이처럼 SOAP 서버 혹은 클라이언트를 보다 쉽게 개발할 수 있도록 해주는 COM 컴포넌트, 유틸리티 등으로 구성된 SOAP 툴킷(toolkit)도 제공되고 있다. 또한 HTTP와 XML이 갖는 장점을 모두 포함하면서 컴포넌트의 상호운용성을 높일 수도 있다.
  3. SOAP은 컴포넌트를 활성화하는 방법이나 호출하는 방법에 대해 전혀 관여하지 않으며 이에 대한 상세한 사항은 HTTP Request를 수신하는 수신자에게 위임하고 있다. 따라서 객체지향기술이나 컴포넌트 기술을 사용하지 않는 애플리케이션일지라도 SOAP을 통해 객체서비스를 제공하거나 제공받을 수가 있다.[3]

단점

  • XML 포맷은 태그 형태로 보내기 때문에 CORBA같은 미들웨어 기술과 비교해서 상대적으로 느리다. 이것은 전송할 메시지가 적을때에는 문제 되지 않을 수 있다. 성능을 향상시키기 위해서 바이너리 객체를 포함시킨 특별한 경우의 XML(바이너리 XML을 말하는듯)로 메시지 전송 최적화 메커니즘(Message Transmission Optimization Mechanism; MTOM)이 나왔다. 게다가 일반적인 XML의 성능을 향상시키기 위해, VTD-XML과 같은 emerging non-extractiv XML 처리 모델이 있다.

SOAP 샘플

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productId>827635</productId>
</getProductDetails>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP은 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. 「헤더」는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타 정보를 가지고 있다. 「바디」부분은 주요한 정보인 정보를 가지고 있다.

profile
행복과 성장에 대해 고민하는 사람🤓 , 포스팅 주기가 잦지 않을 수 있습니다만, 항상 좋은 내용을 담고자 합니다🙇🏼

0개의 댓글