오늘의 나보다 성장한 내일의 나를 위해…
Framework vs Library
Framework란?
“프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것” -by GOF
쉽게 말해서 프레임워크는 차, 비행기, 배 같은 탈것과 같은 운송수단이다.
사람이 탑승하여 시동을 걸고, 기어를 넣고, 핸들을 작동하고, 운전을 해야 한다.
정해진 규칙에 따라 시동을 걸고, 기어를 넣고, 핸들을 돌리면 되는 것이다. 즉, 이미 프로그래밍할 규칙이 정해져 있는 것이다.

프레임워크 종류

Framework의 장점
-
효율적
- 아무것도 그려지지 않은 제로에서 코드를 일일이 짜는 것보다 시간과 비용이 훨씬 절약되며 생산성이 좋아진다.
-
Quality 향상
- 버그 발생 가능성을 처리해줌으로써 개발자가 반복 작업에서 실수하기 쉬운 부분을 커버해준다. 다수의 개발자가 사용하며 수정하다 보니 이미 검증된 코드라고 볼 수 있다.
-
유지 보수가 좋다
- 프레임워크를 쓰지 않고 일일이 코드를 짜 놓은 경우, 회사 입장에서 개발 담당자가 바뀌어버리면 곤란해진다. 그러나 Framework를 사용하면 코드가 보다 체계적이어서 담당자가 바뀌더라도 위험부담을 줄일 수 있으며 유지 보수에 안정적이다.
-
코드의 중복을 줄일 수 있음
- 그로인한 가독성과 유지보수 향상
-
프로그래밍 시간을 줄일 수 있음
- 그로인한 생산성 향상
Framework의 단점
-
오랜 학습시간
- 코드를 본인이 짜 놓은 것이 아니기 때문에 프레임워크에 있는 코드를 습득하고 이해하는 데 오랜 시간이 걸림
-
제작자의 의도된 제약 사항
- 제작자가 설계한 구조를 어느 정도 유지한 채 코드에 살을 붙여나가야 함. 따라서 개발자는 자유롭고 유연하게 개발하는 데 한계가 있음
Library란
쉽게 비유 하자면 톱, 망치, 삽 같은 연장(도구)이다. 사람들이 흔히 도구를 사용하여 썰고, 박고, 땅 파는 역할과 같다.
도구를 사용하다 보면 급할 때는 톱으로 못을 박을 수도 있다.
IT 프로젝트 시에 개발자는 도구를 선택하는 입장이기 때문에, 어떤 도구를 사용하든 사용자가 원하는 것을 만들어 줄 수만 있으면 된다.

정리
라이브러리란 자주 사용되는 로직을 재사용하기 편리하도록 잘 정리한 일련의 코드들의 집합을 의미한다.
- 라이브러리는 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어진다.
API란
API란 응용 프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스이다.
위에서 말했던 것과 같이 라이브러리는 도구 자체이고 API는 “도구 주세요!”라고 요청하는 것이라 볼 수 있을 것 같다.
필요한 부분을 요청하여 응답을 받는 서비스간의 다리와 같은 역할을 한다.
- 구현과 독립적으로 사양만 정의 되어있음
- 접근권한을 부여받아야함
- 말 그대로 인터페이스, 안에는 무엇이 들어있는지 알 수 없음.
결론

Framework
응용 프로그램이나 소프트웨어의 솔루션 개발을 수월하게 하기 위해 제공된 소프트웨어 환경
Library
응용 프로그램 개발을 위해 필요한 기능을 모아 놓은 소프트웨어
API
Exmaple: jQuery
응용 프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
Example: 구글 지도 api/ 카카오 api