본문 바로가기
Programming/Architecture

SDK vs API

by eungbbang 2023. 4. 11.
반응형

 

SDK(System Development Kit)

SDK는 프로그래머가 다양한 플랫폼용 애플리케이션을 구축하는 데 필요한 소프트웨어 도구와 앱이 포함된 키트이다.

 

여기에는 디버거, 컴파일러, 코드 라이브러리, API, IDE 등 앱 모듈을 만드는 데 필요한 모든 것이 포함된다.

어떤 언어를 대상으로 하던지에 상관없이 SDK가 있을 수 있지만, 대상이 되는 특정 플랫폼이 존재하므로 해당 SDK가 어떤 목적을 가지는 지 파악하는 것이 중요하다.

 

완벽하진 않지만, 쉽게 비유를 하자면 컨테이너 박스로 이뤄진 하나의 주상복합 건물로 표현할 수 있다.

 

 

각각의 컨테이너 박스에는 식당과 세탁소, 편의점 등 여러 시설이 있다고 생각해보자.

의사소통만 통한다면 어떤 인종이 오든 물건을 구매하거나 밥을 먹을 수 있을 것이다. 만약 건물에 원룸이 위치한다면 잠을 잘 수도, 화장실에서 씻을 수도 있으며, 사무실이 위치한다면 일을 할 수도 있다. 주상복합 건물에서는 인간이 생존하기 위한 모든 것을 제공 할 수 있는 셈이다.

이렇게 SDK에서는 개발을 위한 모든 것을 포함한다.

 

하지만 만약 노인들만 살고 있는 마을 안 건물에 유치원이 있다면 어떻게 될까? 

"어린이"라는 대상이 존재하지 않는 마을의 유치원은 전혀 쓸모가 없을 것이다. 컨테이너 박스와 마찬가지로 SDK는 쉽게 가지고 다닐 수 있다. 따라서 해당 플랫폼에서 SDK가 어떠한 목적으로 어떻게 사용될지 먼저 파악하는 편이 좋다.

 


 

만약 건물 밖에 있는 사람이 건물 안의 식당에서 밥을 시켜먹고 싶다면 어떻게 할까?

식당에 전화를 해서 내가 있는 곳으로 배달을 요청하면 될 것이다.

 

SDK 역시, API를 사용하여 외부와 응답을 주고 받을 수 있다.

 

API (Application Programming Interface)

 

API는 앱 또는 서비스가 다른 앱 또는 서비스와 통신하기 위한 정의 및 프로토콜 집합이며, 추상화 표준화의 두 가지 특성을 가진다.

 

  • 추상화

API는 응용 프로그램에서 사용하는 프로그래밍 인터페이스를 뜻한다.

* 인터페이스
사물과 사물 사이 또는 사물과 사람 사이의 경계에서 상호 간의 소통을 위해 만들어진 물리적 매개체나 프로토콜
사용이 편리하다는 사용성과 내부 구현은 숨겨진 정보 은닉성의 두 가지 특징을 지닌다.

 

식당에서 배달을 시키고 싶은 사람은 간단히 "전화"라는 방법을 통해 쉽게 음식을 주문할 수 있다. 이때 먹고 싶은 특정 음식을 골라서 요청 할 수 있고, 내가 있는 위치로 음식을 배달 받을 수 있다. (사용성)

하지만 식당에서 누가 어떤 레시피로 조리하는 지는 알 수 없지만, 먹는 사람이 조리 과정을 모두 알 필요는 없다. (정보 은닉성)

 

API  역시 프로세스를 단순화하며, 개발자가 복잡한 논리를 파악할 필요가 없다.

 

 

  • 표준화

API는 이를 정의하는 업계 표준이 있다.

 

건물 안의 관리사무소는 사용자가 쉽게 배달을 시킬 수 있도록 건물에 위치한 식당과 편의시설들의 전화번호를 책자로 만들어 배포했다. 이때 특별히 전화번호를 이메일 형식으로 사용하기로 했다면? 그 누구도 배달을 요청 할 수 없을 것이다. 

이런 혼란을 막기 위해 전화번호는 XXX-XXXX-XXXX 형식의 표준이 있다.

 

API 역시 SOAP, GraphQL, Rest API의 표준이 정의 되어있다. (여기서는 다루지 않는다)

 


 

SDK vs API

 

결론적으로, SDK는 외부와의 통신을 원활하게 하기 위한 API를 포함하고 있다. 

SDK는 애플리케이션을 만드는데 필요한 도구를 제공하며, API를 통해 다른 프로그램과 원활히 통신 할 수 있다.


Reference

https://www.youtube.com/watch?v=kG-fLp9BTRo 

https://enlqn1010.tistory.com/17

https://www.ibm.com/cloud/blog/sdk-vs-api

https://hashdork.com/ko/sdk-vs-api/

https://shuu.tistory.com/45

반응형

댓글