소프트웨어 개발을 위한 '밀키트', SDK
오랜 기간 이어지는 코로나19의 영향으로 '집밥'문화가 확산되면서 가정 간편식도 '밀키트(Meal Kit)' 형태로 진화하고 있다. 밀키트란 손질된 식재료와 함께 조리법, 소스 등 음식에 만드는 데 필요한 모든 재료를 포장한 제품으로, 쿠킹박스나 레시피박스 등의 이름으로도 불린다. 조리에 필요한 재료가 모두 있고, 간을 맞춘 소스까지 있기 때문에 요리 초보자라도 설명서 대로 정해진 용량의 물을 부은 뒤 정해진 시간만큼 익히기만 하면 된다. 냄비와 조리기구만 있으면 '유명 맛집' 음식을 집에서도 손쉽게 만들 수 있다. 특히 요리를 즐겨하는 사람이라면 재료를 추가하거나 조리 방식을 바꾸는 등 레시피는 물론 완성된 요리까지 자신의 취향에 맞출 수도 있다.
소프트웨어 개발자에게도 이러한 밀키트가 있다. 바로 SDK(Software Development Kit, 소프트웨어 개발 키트)다. SDK는 일반적으로 소프트웨어 개발자가 특정 소프트웨어를 구현하는데 필요한 도구를 모은 개발도구 모음을 말한다. 여기에는 소프트웨어의 특정 기능을 구현하는 데 필요한 API(Application Programming Interface)는 물론, 코드 예제 및 테스트 프로젝트, 코드 편집/작성 소프트웨어, 테스트를 위한 가상 환경, 하드웨어 기능 사용을 위한 드라이버 등 개발에 포함한 다양한 도구가 포함돼 있다. 잘 구성된 SDK는 작업에 필요한 모든 구성요소를 제공하는 만큼, 개발자가 특정 목적의 소프트웨어를 더 수월하게 개발할 수 있도록 해준다.
SDK를 이용할 때의 가장 큰 장점은 개발 효율성 증대다. 우선 프로젝트를 진행하는 기업과 개발자 입장에서는 처음부터 끝까지 모든 것을 개발할 필요가 없기 때문에 개발 시간을 단축하고 비용 효율을 높일 수 있다. 기능 구현을 위한 API를 활용할 수 있는 것은 물론, 테스트를 통해 오류나 충돌을 검증할 수 있는 환경으로 실제 서비스를 내놓는 시간을 줄일 수 있다. 또한, 해당 소프트웨어에 대한 개발 경험이 적은 개발자라도 코드 예제 및 라이브러리 등을 통해 기본적인 프로그램 구성 방법을 익힐 수 있다. 마치 밀키트를 이용해 재료를 추가하고 자신만의 요리를 완성하는 것처럼, 향후 개발자는 더 복잡하면서도 정교한 소프트웨어를 개발할 수도 있다.
기업 입장에서도 완제품 소프트웨어를 도입하는 것과 달리 기업 규모나 환경에 맞는 특화 소프트웨어를 개발할 수 있다. 특히, 완제품 소프트웨어의 경우 필요에 따른 업데이트가 사실상 불가능하고, 업데이트 및 취약점 제거 등을 지원하는 보증기간이 종료되면 개발사 정책에 따라 소프트웨어 전체를 교체해야 하는 경우도 있다. 이와 달리, 내부 개발자가 SDK를 이용해 개발한 시스템은 필요에 따라 기능을 추가하는 등의 업데이트를 진행하기 용이하며, SDK 공급기업 역량에 따라 기능 업데이트에 필요한 도구 역시 API 형태로 제공될 수 있다.
자체적으로 사용하기 위해 소프트웨어를 개발하는 기업뿐만 아니라 타 기업의 시스템 구축 사업을 수주하는 SI 기업 역시 SDK를 통해 효율성을 높일 수 있다. 가령, SI 기업이 국가기관용 출입인증 시스템 구축 사업을 수주했다면, 이 사업을 수행하기 위해 보안성, 안정성, 신뢰성 등 운영에 필수적인 사양을 충족해야 한다. 자체적으로 솔루션을 개발할 경우 국내외 인증기관으로부터 사양에 대한 심사를 진행하고 이를 통과해 공신력을 얻어야 한다. 이 과정에서 시간과 비용 역시 소요된다. 만약 SI 기업이 인증보안 솔루션 기업이 제공하는, 검증된 SDK를 이용해 시스템을 구축한다면 필수 솔루션 개발 및 인증심사 등에 소요되는 시간과 비용을 절감하고, 사업 완료를 앞당기는 등 효율성을 높일 수 있다.
SDK 공급 기업은 양질의 SDK를 통해 개발자가 자사의 플랫폼을 이용하도록 유도하고, 생태계를 꾸려나갈 수 있다. 가령 구글은 안드로이드 운영체제용 애플리케이션 개발을 위한 SDK를 개방하면서 전세계 개발자들이 자사의 플랫폼에서 사용할 수 있는 앱과 서비스를 개발하도록 유도해왔으며, 이러한 전략을 통해 세계적인 플랫폼 기업으로 성장할 수 있었다. 이처럼 우수한 SDK를 기반으로 하는 플랫폼 구축과 생태계 확장은 해당 분야 소프트웨어 산업의 양적/질적 성장에도 기여할 수 있다.