수의사 클리닉을 위한 모바일 앱을 개발하고 있다고 가정해보겠습니다. 이 모바일 앱은 실제로 접수원이 애완 동물이 클리닉에 들어올 때 사진을 찍을 수 있도록 하고 앱은 시각적 인식 서비스와 통신하며 클라우드에서 실행됩니다. 내부적으로는 클리닉에 들어온 동물을 찍은 사진을 서비스로 전송하고 전송을 받은 서비스는 애완 동물의 이름을 반환합니다.
통신에는 API
와 SDK
가 있습니다.
먼저 API
에 대해 이야기해보겠습니다.
앱 또는 서비스는 다른 앱 또는 서비스와 통신 하기 위한 정의 및 프로토콜 집합이 있습니다. 따라서 앱과 클라우드 기반 시각 인식 서비스를 연결하는 다리라고 생각할 수 있습니다.
VR 서비스 내부, 클라우드에는 잠재적으로 수천 줄의 코드가 실행되고 있습니다. 그리고 모바일 앱 개발자로서 이러한 코드들에 신경 쓸 필요가 없습니다. 예를 들어, 이 서비스에서 애완 동물의 이름을 얻기 위해 어떤 방법을 호출해야 하는지에 대해 걱정할 필요가 없는 것입니다. API
가 하는 일은 복잡한 논리를 모두 추상화하므로 필요한 데이터만 얻는 것에 대해 집중하게 하고 프로세스를 단순화합니다.
API
를 정의하는 방법에 대해서는 업계 정의 표준이 있으며 API
에 널리 사용되는 몇 가지 형식이 있습니다. SOAP
, GraphQL
또는 REST
가 있습니다. 여기서 REST
는 Representational State Transfer
의 약어입니다.
우선 실제로 데이터를 보내거나 모바일 앱에서 요청을 클라우드의 VR 서비스로 보내려면 몇 가지 작업이 필요합니다. REST API 호출 요청의 경우 작업이라고 하는 것이 필요합니다. 작업인 즉슨 HTTP Method라고 할 수 있습니다. HTTP Method는 POST
, PUT
, GET
, DELETE
가 있습니다. 위 예시의 경우, 애완 동물을 찍은 이미지의 파일 이름을 포함하여 파일을 서비스에 전송하기 때문에 POST 메서드가 됩니다.
다음으로 매개 변수가 있는데 이것은 선택사항입니다. 위 예시의 경우 촬영한 이미지의 파일 이름이 매개변수가 될 수 있습니다. 최종적으로 매개 변수가 포함된 슬래시로 구분된 URL 주소가 엔드포인트가 되어 해당 URL에 작업을 요청하게 됩니다.
시각 인식 서비스에서 수신한 REST API 응답 호출은 어떨까요 ?
일반적으로 JSON과 같은 일종의 원시 데이터입니다. 응답은 다음과 같습니다. 클리닉에 들어온 동물의 종 그리고 해당 동물의 이름을 데이터로 가지고 있습니다. 이것이 API가 무엇인지에 대한 일종의 빌딩 블록입니다.
코드에서의 API
요청은 작업, 매개변수, 엔드포인트의 모든 빌딩 블록으로 요청을 처리하고 원시 JSON 객체를 처리해야 하므로 번거롭습니다. 그래서 SDK
가 등장합니다.
SDK
는 라이브러리 또는 실제로 API를 호출하는 코드라고 생각할 수 있습니다. 따라서 한 프로그래밍 언어에 특화되어 있을 수 있습니다. SDK는 다양한 언어로 언어마다 구성할 수 있어 다음과 같이 Java
, Node
, Go
, Python
과 같은 언어마다 SDK가 존재할 수 있습니다.
SDK
를 사용하여 모바일 앱 내에 작은 SDK
도구 상자를 배치하고 이 경우 모바일 앱이므로 Java SDK
를 사용하겠습니다. 따라서 Java SDK
에는 이러한 모든 빌딩 블록으로 요청을 수동으로 구성할 필요없이 실제로 호출할 수 있는 메서드만 호출할 수 있습니다.
이러한 메서드는 실제로 호출될 수 있으며 빌딩블록
, 오퍼레이션
, 매개변수 및 요청
이 사용자를 위해 만들어지고 코드로 해당 API 요청을 작성합니다. 이에 대한 응답으로 응답을 받을 수 있지만 응답을 반드시 JSON
객체로 받을 필요는 없습니다.
따라서 위 예시에서 코드는 다음과 같을 수 있습니다. Visual Recognition Analyze and Get Results
메서드라고 하는 Analyze Response Object
가 있습니다. 시각적 인식 서비스를 통해 보낸 파일의 이름인 cat.jpg
라는 문자열을 매개변수를 전달하고 이에 대한 응답으로 실제로 모바일 앱에서 해당 레이블을 표시할 수 있습니다. 이 데이터는 SDK
를 통해 JAVA에서 응답 모델 개체의 형태로 받은 데이터이며 고양이가 건물에 들어간 것을 알 수 있습니다.