Account 로그인
바로 가기

SDK(소프트웨어 개발 키트, Software Development Kit)란?

URL 복사

소프트웨어 개발 키트(Software Development Kit, SDK)는 (일반적으로) 하드웨어 플랫폼, 운영 체제(Operating System, OS) 또는 프로그래밍 언어 제작사가 제공하는 일련의 툴입니다.

소프트웨어 개발자는 SDK를 활용하여 특정 플랫폼, 시스템 또는 프로그래밍 언어에 따라 애플리케이션을 개발할 수 있습니다. 이를 직접 조립할 수 있는 옷장에 포함되어 있는 도구 키트라고 생각하시면 쉬울 것 같습니다. SDK는 애플리케이션 개발에 사용된다는 것만 다를 뿐입니다. 작업 완료에 필요한 요소 또는 개발 툴은 제공되지만 키트에 포함된 내용물은 제작사마다 다릅니다. 

일반적으로 기본 SDK에는 컴파일러, 디버거, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)가 포함되지만, 다음 중 한 가지도 포함될 수 있습니다.

  • 설명서
  • 라이브러리
  • 편집기
  • 런타임/개발 환경
  • 테스트/분석 툴
  • 드라이버
  • 네트워크 프로토콜

양질의 SDK라면 개발자가 특정 제품 및 에코시스템을 위한 새로운 애플리케이션을 개발할 때 필요할 수 있는 모든 구성 요소를 제공할 것입니다. 일부 SDK에는 개발자가 최대한 빨리 시작할 수 있도록 예시 또는 기본 테스트 프로젝트도 포함되어 있습니다.

소프트웨어 개발 키트의 몇 가지 예로 Java 개발 키트(Java Development Kit, JDK), Windows 7 SDK, MacOS X SDK, iPhone SDK를 들 수 있습니다. 구체적인 예를 들자면, 쿠버네티스 오퍼레이터 SDK는 개발자가 자기만의 쿠버네티스 오퍼레이터를 개발하는 데 도움이 됩니다. 이 SDK에는 상위 수준의 API, 스캐폴딩 및 코드 생성용 툴, 그리고 공통된 오퍼레이터 활용 사례를 포괄하는 확장 기능이 포함되어 있습니다. 

새 모바일 애플리케이션이나 프로젝트를 소스 텍스트 수준에서 커맨드라인으로 연결하기 위해 대부분의 SDK에는 API가 포함되어 있습니다. 코드 샘플도 포함된 경우가 많은데, 이 코드에서 제공하는 예시 프로그램 및 라이브러리는 개발자가 기본 프로그램 빌드 방법을 학습하는 데 도움이 됩니다. 이를 출발점으로 삼아 개발자는 최적화 및 복잡한 애플리케이션을 더욱 쉽게 개발하게 될 수 있을 뿐만 아니라, 필요에 따라 디버깅하고 새로운 기능을 추가할 수 있습니다.

일부 SDK에는 API 사용법에 관한 설명서뿐 아니라 튜토리얼, FAQ, 샘플 그래픽이 포함되어 있는데, 그 이유는 개발자가 새 SDK를 사용하는 방법을 배우는 데 시간이 걸릴 수 있기 때문입니다. 따라서 직관적인 프로그래밍 또는 사용자 인터페이스(또는 더 광범위한 설명서)는 개발자가 경쟁업체의 옵션 대신 한 업체의 특정 프로그램을 사용하도록 권장할 때 유용합니다.

마찬가지로 기업은 SDK를 활용하여 개발자들에게 제품을 소개하고 자사 플랫폼이나 OS를 사용해 통합된 개발 환경에서 애플리케이션을 개발하도록 권장할 수 있습니다. 이러한 이유로 대부분의 SDK는 무료로 사용할 수 있으므로 개발자는 SDK를 다운로드하여 즉시 프로그래밍을 시작할 수 있습니다. 

일부 SDK에는 사용 전에 미리 동의하고 제출해야 하는 규칙이나 계약이 있을 수 있습니다. 특히 알파 또는 베타 단계에 있는 신제품이나 일반에 공개되지 않은 알고리즘(오픈소스가 아님)이 포함된 소프트웨어인 경우 그렇습니다. SDK에는 새로 개발된 소프트웨어가 호환되지 않는 라이센스로 릴리스되지 않도록 라이센스 계약이 적용될 수도 있습니다.

개발자는 작업에 사용할 SDK를 선택할 때 이러한 점을 고려해야 합니다. 예를 들면 다음과 같습니다.

  • 독점 라이센스가 있는 SDK는 오픈소스 소프트웨어 개발과 호환되지 않습니다.
  • GPL(General Public License)이 있는 SDK는 독점 애플리케이션 개발에 사용할 수 없습니다.
  • 독점 코드 요소가 있는 프로젝트를 위해 LGPL(Lesser General Public License)을 피해 작업할 경우 주의해야 할 사항이 있습니다. 

오픈소스 애플리케이션을 아마추어와 전문가들이 지속적으로 개발하는 이유는 SDK가 새로운 설계 및 기능 확장을 코딩하여 이를 커뮤니티와 공유하는 것을 염두에 두고 있기 때문입니다. 

Red Hat은 최상의 툴, 솔루션, 서비스를 통합하여 애플리케이션을 개발하며, 이를 오픈소스 방식으로 실현하고 있습니다. 애플리케이션을 빌드할 플랫폼(Red Hat OpenShift) 또는 런타임 환경(Red Hat Runtimes), 애플리케이션을 개발, 디버그, 테스트, 배포하는 데 필요한 모든 툴을 갖춘 개발 환경(Red Hat CodeReady Studio) 등 Red Hat은 다양한 지원을 제공합니다.

Keep reading

문서

스테이트풀과 스테이트리스 비교

스테이트풀과 스테이트리스는 상호 작용 상태가 얼마나 오래 기록되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별할 수 있습니다.

문서

Quarkus란?

Quarkus는 Java 가상 머신(Java Virtual Machine, JVM)과 네이티브 컴파일을 위해 만들어진 쿠버네티스 네이티브 Java 스택으로, 특히 컨테이너에 Java를 최적화합니다.

문서

서버리스란?

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.

클라우드 네이티브 애플리케이션에 대한 자세한 내용

제품

Red Hat OpenShift

자동화된 풀스택 오퍼레이션으로 하이브리드 클라우드, 멀티클라우드 및 엣지 배포를 관리하는 엔터프라이즈급 쿠버네티스 컨테이너 플랫폼입니다.

Red Hat Fuse

여러 서비스를 서로 분리하여 독립적으로 생성, 확장, 배포할 수 있게 하는 분산형 클라우드 네이티브 통합 플랫폼입니다.

리소스

e-book

클라우드 네이티브와 하이브리드 클라우드의 융합: 전략 가이드

E-book

클라우드 네이티브 애플리케이션 구현을 위한 과정

교육

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures

Illustration - mail

유용한 콘텐츠 더 보기

Red Hat Shares 뉴스레터를 구독해 보세요(무료).