개발을 진행하며 파일 구조를 설계할 때 항상 디렉토리 명과 파일 명들을 명명할 때 고민이 되거나 헷갈리는 경우가 있다. 이 때 네이밍에 좀 참고하고자 해당 내용들을 정리해보았다.
SDK(Software Development Kit)
SDK(Software Development Kit)란 직역하자면 소프트웨어 개발 도구 모음이다. SDK에는 API, IDE, 문서, 라이브러리, 코드 샘플 및 기타 유틸리티 등 다양한 개발 도구를 포함하고 있다. 또한 프로그램 및 응용 프로그램 개발의 복잡성을 줄이는 강력한 기능 집합으로 볼 수 있다. 즉, 어떤 소프트웨어를 만들기 위한 도구 모음을 SDK라고 한다. 그리고 이 도구엔 API도 포함되어 있다.
예를 들어 iOS SDK를 다운로드하면 개발자에게 iOS 애플리케이션을 만드는 데 필요한 모든 도구가 제공되는 경우를 들 수 있다. iOS SDK는 개발자가 컴퓨터에서 iPhone 시뮬레이션을 할 수 있는 iPhone 시뮬레이터도 포함하고 있다.
API(Application Programming Interface)
API(Application Programming Interface)란 모듈화하여 만들어진 어떤 기능을 제어/제공하는 인터페이스를 말한다. 우리가 사용하는 대부분의 애플리케이션은 API에 의존하고 있다. API는 공공 데이터 포털과 같은 곳에서 무료(open API)로 배포하는것도 있지만 비공개(private) API도 있다. 또는 일정 요금을 받고 일일 요청(Call) 횟수 제한을 해제해주거나 더 많은 데이터를 제공해주는 경우도 있다. 일반적으로 API를 요청할때 URL를 통해서 요청을 하게 되는데 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 개념이다.
API는 SDK의 일부가 될 수 있어 결론적으로 SDK > API와 같은 관계로 볼 수 있다.
모듈(Module)
모듈(Module)은 기능별로 작게 나누어진 프로그램 단위라고 볼 수 있다. 요즘은 여러개념을 섞어서 쓰기는 하지만 결국 모듈이란 개별 프로그램의 작은 단위를 뜻한다. 아래는 코드를 모듈로 잘 구성하였을 때의 장점이다.
- 자주 사용되는 코드를 별도의 파일로 만들어서 필요할 때마다 재활용할 수 있다.
- 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다.
- 코드 수정 시에 필요한 로직을 빠르게 찾을 수 있다.
- 필요한 로직만을 로드해서 메모리의 낭비를 줄일 수 있다.
- 한번 다운로드된 모듈은 웹브라우저에 의해서 저장되기 때문에 동일한 로직을 로드 할 때 시간과 네트워크 트래픽을 절약 할 수 있다. (브라우저에서만 해당)
예를 들어 윈도우의 메모장은 글쓰기, 저장, 글씨체 변경, 파일 읽어오기 등 여러가지 기능이 있다. 이렇게 작게 하나의 기능들로 이루어져있는 프로그램을 모듈이라고 한다. 코드로 보면 아래와 같다. python으로 작성한 예시이다.
# my_module.py
def add(a, b):
return a + b
def substract(a, b):
return a - b
이렇게 여러 기능을 가진 하나의 모듈을 만들어 관리하여 재사용하거나 유지보수를 용이하게 할 수 있다.
모듈과 API는 한가지 동작을 한다는 공통점이 있지만 모듈은 해당되는 프로그램에 속한 기능이고 API는 외부 소프트웨어에서 꺼내갈 수 있는 기능이라는 차이점이 있다.
위젯(Widget)
위젯(Widget)은 비교적 최근에 등장한 개념으로 대표적으로 블로그에 붙이는 달력과 날씨, 그리고 트위터댓글 위젯을 들 수 있다. 플러그인처럼 설치를 하거나 대여섯줄 분량의 소스를 원하는 자리에 붙이면 바로 실행할 수도 있다. 플러그인이 자체적으로 완벽한 하나의 프로그램인 것에 비하면 위젯은 프로그램을 호출하여 보여주는 방식이다.
모바일 앱을 예를 들면 라이브러리를 설치하여 하나의 컴포넌트를 구성하여 사용자에게 표출해주는 부분을 위젯으로 볼 수 있다.
관련 포스트
참고 자료
https://velog.io/@originxh/API%EC%99%80-%EB%AA%A8%EB%93%88%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://moneyraise123.tistory.com/4
http://www.theprconsulting.com/?p=2842
https://blue-shadow.tistory.com/101