Library와 SDK, API의 차이점
Library와 SDK, API는 모두 소프트웨어 개발을 돕는 도구들이지만, 그 범위와 목적에서 차이가 있습니다. 세 가지 개념은 포함 관계로 이해하면 가장 쉽습니다.
세 가지 개념의 관계 (포함 관계)
가장 넓은 범위가 SDK이며, SDK 안에 API와 라이브러리가 포함되는 경우가 많습니다.
Library (라이브러리)
라이브러리는 특정 기능을 수행하도록 미리 작성된 코드의 집합입니다. 개발자가 반복적으로 수행해야 할 작업을 대신 해줍니다.
목적: 특정 기능을 제공하여 개발 효율성을 높입니다.
성격: 단일 기능 또는 제한된 기능에 초점을 맞춥니다.
예시: Flutter의
http라이브러리(네트워크 통신 기능),path_provider라이브러리(파일 경로 접근 기능).
API (Application Programming Interface)
API는 소프트웨어 구성 요소가 서로 통신하는 데 사용하는 규칙 및 정의의 집합입니다. 라이브러리나 SDK를 통해 접근할 수 있는 '사용 설명서' 또는 '창구' 역할을 합니다.
목적: 다른 시스템, 서비스, 또는 코드 블록과 상호작용하는 방식을 정의합니다.
성격: 주로 메서드(함수)와 데이터 형식 등 접근 규칙을 의미합니다.
예시: Google 지도 API (지도 데이터를 요청하고 표시하는 방법), 라이브러리 내의 공개 함수 이름과 사용법.
SDK (Software Development Kit)
SDK는 특정 플랫폼이나 서비스용 애플리케이션을 개발하는 데 필요한 모든 도구를 묶어 놓은 종합 선물 세트입니다.
목적: 특정 환경(플랫폼/서비스)에서 앱을 만들 수 있도록 완전한 환경을 제공합니다.
성격: 라이브러리, API, 문서, 샘플 코드, 에뮬레이터 등 개발에 필요한 모든 것을 포괄합니다.
예시: Flutter SDK (Flutter 앱 개발 전체), Android SDK (Android 앱 개발 전체), AdMob SDK (앱에 광고를 통합하는 데 필요한 모든 도구).
요약 비교
| 구분 | 범위 | 역할 | 예시 |
| API | 가장 좁음 (규칙) | 소통 및 호출 규칙 정의 | getProducts() 함수 호출 방식 |
| Library | 중간 (코드 묶음) | 특정 기능을 대신 수행하는 코드 제공 | http 통신 코드, Flame 엔진 코드 |
| SDK | 가장 넓음 (종합 세트) | 개발에 필요한 모든 것 제공 (도구 + API + 라이브러리) | Flutter SDK, Android SDK |