애플리케이션에 연결해 사용할 수 있게 한 코드의 묶음. 사용자 인증, 서버 연결, 사용자 인터페이스(UI), 데이터 관리, 애니메이션 등 자주 사용하는 코드를 매번 반복해서 새로 쓸 필요가 없도록 라이브러리로 저장해 재사용한다. 자주 거는 전화번호를 단축번호로 저장하는 것과 비슷하다. 어떤 개발자들은 똑같은 요소를 다른 사람들이 어떻게 다르게 접근하고 코드를 짰는지 검토하려고 라이브러리를 찾아 보기도 한다고. GitHub(깃헙) Gist, CodePen, JSFiddle, Codepad, Codeshare 같은 웹사이트에서 본인이 만든 라이브러리를 공유하거나 다른 사람이 만든 라이브러리를 가져다 쓴다.
라이브러리와 동의어처럼 쓰는 이들도 있지만 프레임워크는 라이브러리 1개일 수도 있고, 여러 라이브러리의 집합일 수도 있고, 스크립트 같은 것의 묶음일 수도 있다. 프레임워크는 개발자가 직접 채워넣을 빈칸이 있는 큰 코드 묶음이고, 라이브러리는 좀 더 작고 좁게 초점을 맞춰서 더 큰 코드 세트에 끼워넣을 수 있게 작성된 코드 묶음이다. 비유를 하자면, 인터넷에서 본 방과 똑같이 방을 꾸미고 싶어서 그 디자인을 그대로 가져왔다면 그건 라이브러리고, 내 방은 내가 직접 설계할 수 있게 빈칸으로 비워둔 집 전체 설계 도면을 가져왔다면 그건 프레임워크에 해당한다.
SDK는 특정 프로그래밍 언어로 애플리케이션을 만들 때 사용하는 도구 모음을 가리킨다. 앱 개발에 필요한 모든 자원과 도구가 마련돼 있는 작업장(workshop)과 비슷하다. 예컨대 아이폰용 앱을 개발하려면 애플이 제공하는 iOS SDK의 도구를 사용해야 아이폰에서 잘 작동한다.
이해가 잘 안 되서 동료에게 'SDK를 보여달라'고 부탁하니 (알 수 없는 코드를 잔뜩 보여주면서 알 수 없는 설명을 한참...) '밀키트'에 비유했다. 궁중떡볶이 만든다고 소고기 사서 얇게 썰고 피망, 양파, 버섯 썰고 떡 불리고 양념 만들고 할 것 없이 이미 준비된 것들로 조리만 하면 되는 밀키트처럼 개발의 효율을 높여주는 도구 모음이라는 것. 그 비유를 들으니 이해가 확 되면서 또 라이브러리, 프레임워크와 뭐가 다른 건지 헷갈려 버리는 안타까운 일이.
LinkedIn > Learning > Technology for Product Managers 강좌를 바탕으로 정리한 내용입니다.