Wednesday, November 12, 2014

Open API에 대한 간단한 정리 및 기술 요약

Open API에 대한 간단한 정리 및 기술 요약

Open API는 서비스, 정보, 데이터 등을 언제, 어디서, 누구나 쉽게 이용할 수 있도록 공개된 API를 말하며, 플랫폼 독립적으로 새로운 응용 서비스를 쉽게 개발할 수 있도록 합니다. 

주요 기술로는 웹서비스, SOAP, REST, XML, JSON, OAuth 등이 있으며 각 기술들에 대해 간단히 정리해 보면 다음과 같습니다.  

웹서비스 : Open API에서는 주로 사용하는 웹서비스 기술로는 SOAP (Simple Object Access Protocol) 과 REST (Representational State Template)가 사용됨

SOAP : 
HTTP, HTTPS, SMTP등을 통해 XML기반 메세지를 교환하는 프로토콜
장점 : 프록시/방화벽 영향 없고, 플랫폼/언어에 독립적, 웹서비스표준 사용(WSDL, UDDI, WS-*), 에러처리 기본제공, 분산환경에 적합
단점 : 복잡한 구조로인한 Overhead, 무겁고 느리고 개발 난이도 높음

SOA(Service Oriented Architecture) 구조에 따라 UDDI 레지스트리를 통해 웹 서비스를 등록(Publish) 하고, 탐색(Find), 바인딩(Bind) 하여 적용. 
동작방식은 서비스 요청자가 웹 서비스 요청을 SOAP 로 encoding 하여 Service Provider에게 전달하면 Service Provider는 이를 decoding 하여 적절한 서비스 로직을 태워 결과를 얻고 다시 SOAP로 encoding 하여 서비스 요청자에게 반환하는 방식으로 이루어짐. 주로 Business transaction이나 Service 상호 연동을 위해 사용됨.

REST : 
HTTP를 통해 세션 트랙킹 같은 부가적인 기능을 전송레이어 없이 전송하기 위한 간단한 인터페이스
HTTP의 기본 개념을 충실히 따름
장점 : 플랫폼/언어 독립적, 단순, 러닝커브 작음, 간결함(추가적인 메시징 계층 없음
단점 : point-to-point 통신모델로 분산 환경에 적합치 않음, 보안/정책 표준 없음. HTTP만 지원
 
ROA (Resource Oriented Architecture) 기반으로 Resource를 등록, 저장해 두는 중간매체 없이 Resource 제공자가 직접 요청자에게 Resource를 제공하는 방법을 이용. 동작 방식은 HTTP 프로토콜의 GET/PUT/POST/DELETE method를 이용하여 JSON/XML/RSS 등 다양한 형태로 Resource를 직접 실어 나름. 데이터와 UI 처리시에 사용함

XML/JSON : 
데이터를 표현하는 XML과 JSON방식의 경우 JSON은 데이터를 key-value 로 경량화 하여 표현/처리하기 때문에 데이터 크기가 줄어드는 반면 처리시간은 XML보다 많이 소요됨

OAuth :
Open API를 사용하기 위해 표준화된 인증 방식 (RFC 5849/6749, http://tools.ietf.org/html/rfc5849http://tools.ietf.org/html/rfc6749)
사용자가 API를 사용하여 서비스를 요청하기 위해 Service Provider에 등록 -> 등록이 완료되면 토큰을 발급 -> 등록된 토큰으로 서비스를 받을 URL에 접근 -> 인증이 되면 PIN을 Return -> 해당 Application에서 PIN을 입력 -> Access Token 발급하여 서비스 받음. ID/PW에 대한 노출 없이 Access Token을 통해 인증처리 됨

No comments: