Search
Duplicate
📗

API 그리고 SDK

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
개발지식
Scrap
태그
9 more properties
개발을 하거나, 개발관련 강의를 듣거나 혹은 그냥 인터넷을 보다가도 API와 SDK는 자주 등장하게 된다. 들었던 내용과 쓰던 상황을 토대로 API는 이런거구나, SDK는 이런거구나 유추하며 써왔었기에 그 개념들을 한번 천천히 정리해 보려고 한다.
우리가 수의사 클리닉을 위한 모바일 앱을 만든다고 생각해보자. 이 앱은 접수원이 애완 동물이 클리닉에 들어올 때 사진을 찍을 수 있도록 하고, 앱은 시각적 인식 서비스와 통신한다(이 과정은 클라우드에서 실행된다).
<그림>
그리고 이 서비스가 동물의 이름과 파일을 반환하는 방식이다.
우리는 이과정을 어떻게 구현할수 있을까?
모바일 앱과 이 클라우드 기반 서비스간에 어떻게 통신할 수 있는 것일까?
이 과정을 도와주는 것이 바로 API 그리고 SDK이다.

API란 무엇일까?

API(Application Programming Interface)는 주로 통신에 관한 것이다. 즉, 나와는 다른 앱 또는 서비스와 통신 하기위한 정의 및 프로토콜의 집합체이다. 따라서 위의 예제에서 나의 앱과 클라우드상의 시각적 인식 서비스를 연결하는 다리가 바로 API인 것이다.

API의 주요 특징

Communication
서비스간 통신을 도와준다.
Abstraction
복잡한 논리들을 모두 추상화함으로써 필요한 데이터에 대한 접근을 걱정할 필요가 없다. 프로세스를 단순화 시켜준다.
Standard
API를 정의하는 방법 등에 대한 것들이 업계 표준이 되어 있다. 또한 SOAP, GraphQL, REST 등과 같이 널리 사용되는 형식이 있다.

API의 구성요소

Request (위 예제를 기반으로)
Operation
image와 데이터를 request해야하기 때문에 POST라는 method를 사용한다고 보면 된다. (PUT, Delete 등 다양한 HTTP method라고 생각할 수 있다)
Parameter(Optional)
파일 이름 등을 사용한다고 볼 수 있다.
End-Point
시각적 인식 서비스의 URL이라고 볼 수 있다.
Response
Raw-Data
JSON과 같은 원시 데이터 파일 일 수 있다.
End-Point
어플리케이션의 URL이라고 볼 수 있다.
그렇다면 개발을 진행할 때 이 API를 어떻게 불러오고 사용할 수 있는 것일까?
이때 SDK가 등장한다. 우리는 Request에 필요한 변수, 데이터 파싱 등 직접 처리할 필요 없이 SDK를 활용해 멋지고 간단하게 개발을 진행할 것이다.

SDK란 무엇일까?

SDK(Software Developement Kit)는 프로그램을 개발할때 도움을 주는 도구상자이다. 즉, API를 호출하는 코드라고 생각할 수 있다. 따라서 한 프로그래밍 언어에 특화되어 있을 수 있다(다양한 언어로 된 SDK가 존재하는 이유이다).
위의 예제에서는 어디서 SDK가 사용되는 것일까?
어플리케이션 안에 작은 SDK tool box를 배치하고 위에서의 모든 API request block을 실제로 활용 가능한 method를 호출하는 것이다. 예를들어 아래의 코드와 같다.
AnalyaeResponse response = visualRecognition.analyze("cat.jpeg").getResult(); label.setText(response.name);
Java
복사
직접 API를 위한 요청을 API양식에 맞게 작성할 필요 없이 SDK가 제공하는 method만으로 작업을 처리할 수 있는 것이다.

<추가사항>

REST란?

REST(Representational State Transfer)의 약자로 source를 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

즉, ResourceRepresentation에 의한 State Transfer이다.

여기서 Resource는 해당 소프트웨어가 관리하는 모든 것들이다.
문서, 그림, 데이터, 해당 소프트웨어 자체
Representation이란 그 자원을 표현하기 위한 이름이다.
DB의 학생정보가 source일 때, 'students'가 자원의 표현
State Transfer은 해당 시점에서의 source의 정보를 전달하는 것이다.
JSON혹은 XML형태로 데이터를 주고 받는 것이 일반적

REST API란?

REST를 기반으로 서비스 API를 구현한 것이다. 최근 OpenAPI, 마이크로 서비스 등을 제공하는 업체 대부분은 REST API를 제공한다.
Open API란? 누구나 사용할 수 있도록 공개된 API이다. ex) 구글 맵, 네이버 지도, 오픈스트리트맵 등 - https://ko.wikipedia.org/wiki/오픈_API
마이크로 서비스란? 애플리케이션을 상호 독립적인 최소 구성 요소로 분할하는 것이다. 마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해 준다. - https://aws.amazon.com/ko/microservices/

REST API 설계 예시

출처