API, 라이브러리, 프레임워크의 차이 ( 개념 / 비유 / 예시 )

방충림·2023년 3월 21일
9

CS

목록 보기
17/26
post-thumbnail

누구에게나 이상하리만치 정말 와닿지 않는 개념이 있다.
나에게는 그것에 API와 라이브러리의 구분이었다.
프레임워크와 라이브러리의 구분은 알겠다.
그러나 API와 라이브러리의 구분은 너무도 혼란스러웠다.

이유가 뭘까? 고민해봤다.
그러다 내린 결론은, 이미 잘못된 예시를 너무 많이 접해왔기 때문이다.

api인데 그것을 라이브러리로 부르는 사람, 라이브러리인데 그것을 api로 부르는 사람.
그런 상황에 자주 노출되다보니 그 경계의 개념에 허물어져 있는 것 같다.

그래서 비유와 예시들을 준비했다. 이로써 허물어진 경계를 재건해보자.
나같은 고민을 가지고 있는 사람이 이 글을 본다면 부디 여기서 답답함을 해결하고 가실 수 있었으면 좋겠다.

개념으로 비교해보자

API (Application Programming Interface), 라이브러리 (Library), 프레임워크 (Framework)는 모두 소프트웨어 개발에서 사용되는 용어이다

API

API는 두 개 이상의 소프트웨어 컴포넌트 사이에서 상호 작용할 수 있도록 정의된 인터페이스를 말한다. API는 일반적으로 함수, 프로토콜 또는 클래스로 구성되며, 다른 소프트웨어 개발자들이 이를 사용하여 특정 서비스 또는 기능을 사용할 수 있다. API는 소프트웨어 컴포넌트 간의 인터페이스를 정의하는 것으로, 예를 들어, 다른 개발자들이 사용할 수 있는 함수, 메서드, 클래스 등을 정의하는 것이다.

라이브러리

라이브러리는 개발자들이 자주 사용하는 코드 집합이다. 라이브러리는 여러 기능을 제공하며, 이를 사용하여 개발자들은 복잡한 기능을 더 쉽게 구현할 수 있다. 라이브러리는 여러 개발자가 공유하여 사용할 수 있는 소프트웨어 코드 모음이다.

프레임워크

프레임워크는 개발자들이 애플리케이션을 개발하는 데 사용되는 구조를 제공한다. 프레임워크는 일련의 규칙과 구조를 정의하고, 개발자가 애플리케이션을 작성할 때 이러한 규칙과 구조를 따르도록 한다. 프레임워크는 보통 여러 컴포넌트와 라이브러리를 포함하며, 개발자가 특정 기능을 구현하기 위해 이를 조합하여 사용한다.

요약하면, API는 소프트웨어 컴포넌트 간의 인터페이스를 정의하는 것이고, 라이브러리는 개발자들이 자주 사용하는 코드 집합이며, 프레임워크는 애플리케이션을 개발하는 데 사용되는 구조를 제공하는 것이다.



비유로 비교해보자

api

'나'는 올해 가구 배치를 하며 집을 꾸미기로 했다. 의자와 책상 같은 건 제작할 수 있었지만 침대,소파 같은 가구는 만들기엔 어렵다고 판단했다. 그래서 나는 주문제작을 하기로하고 내가 원하는 사이즈를 담은 주문내역을 작성하고 침대를 만드는 업체에 부탁을 했다.

라이브러리

'나'는 의자를 만들기위해 망치,톱,못 등등 여러 공구를 가져다 놓고 만들기 시작했다. 이후 추가 공구를 더 가져올지는 내가 자유롭게 선택할 수 있다.

프레임 워크

요리사인 '나'는 손님들의 입맛에 맘에 드는 음식을 만들기 위해 정해진 레시피대로 따라 만들어야한다. 주어진 재료와 레시피대로 요리를 해야하며 이것을 벗어나면 안되고, 이를 따르면 손님들이 보다 더 만족할만한 좋은 요리를 만들 수 있다.



예시로 비교해보자

API (Application Programming Interface)

Twitter API: 트위터에서 제공하는 API
Google Maps API: 구글에서 제공하는 지도 API
YouTube API: 유튜브에서 제공하는 API
OpenWeather API: 날씨 정보 API
GitHub API: 깃허브에서 제공하는 API
Kakao API: 카카오에서 제공하는 API
Stripe API: 결제 API
Twilio API: SMS 및 음성 API
AWS API Gateway: 아마존 웹 서비스에서 제공하는 API 관리 서비스
Google Cloud Vision API: 구글에서 제공하는 이미지 분석 API

라이브러리 (Library)

Lodash: 자바스크립트 유틸리티 라이브러리
jQuery: 자바스크립트 DOM 조작 라이브러리
React Transition Group: React 애니메이션 라이브러리
Moment.js: 자바스크립트 날짜 라이브러리
Chart.js: 자바스크립트 차트 라이브러리
Axios: 자바스크립트 HTTP 클라이언트 라이브러리
NumPy: 파이썬 수치 계산 라이브러리
Pandas: 파이썬 데이터 분석 라이브러리
Matplotlib: 파이썬 시각화 라이브러리
BeautifulSoup: 파이썬 웹 스크래핑 라이브러리

프레임워크 (Framework)

React: 자바스크립트 UI 프레임워크 (공식사이트에서는 라이브러리 라고 말함)
Angular: 자바스크립트 프레임워크
Vue.js: 자바스크립트 프론트엔드 프레임워크
Django: 파이썬 백엔드 웹 프레임워크
Ruby on Rails: 루비 웹 프레임워크
Spring: 자바 백엔드 프레임워크
Express.js: Node.js 웹 프레임워크
Flask: 파이썬 백엔드 웹 프레임워크
Laravel: PHP 웹 프레임워크
ASP.NET: 마이크로소프트 웹 프레임워크



추가적 의문점들

Q1. 모듈이랑 패키지는 무엇인가? 라이브러리, 프레임워크와는 어떤 관계를 가지는가?

패키지와 모듈은 소프트웨어 개발에서 사용되는 용어이다. 라이브러리나 프레임워크와 관련이 있을 수도 있다.

패키지는 관련된 모듈들을 그룹핑하는 방법이다. 일반적으로 소프트웨어에서는 기능별로 모듈을 작성하고, 이러한 모듈들을 관련된 패키지에 포함시킨다. 이렇게 패키지를 사용하면 모듈들을 조직적으로 관리할 수 있으며, 다른 개발자들과 코드를 공유할 때도 편리하다.

모듈은 소프트웨어의 작은 부분으로, 특정 기능을 수행하는 코드 집합이다. 모듈은 파일 하나에 작성될 수 있으며, 다른 모듈에서 재사용될 수 있다. 라이브러리나 프레임워크는 모듈들의 집합으로 구성될 수 있다.

라이브러리는 여러 개발자가 공유하여 사용할 수 있는 소프트웨어 코드 모음이다. 라이브러리는 일반적으로 관련된 모듈들의 집합으로 구성된다. 개발자들은 라이브러리의 모듈을 가져와서 자신의 코드에서 사용할 수 있다.

프레임워크는 애플리케이션을 개발하는 데 사용되는 구조를 제공하는 것이다. 프레임워크는 일련의 규칙과 구조를 정의하고, 개발자가 애플리케이션을 작성할 때 이러한 규칙과 구조를 따르도록 한다. 프레임워크는 보통 여러 컴포넌트와 라이브러리를 포함하며, 개발자가 특정 기능을 구현하기 위해 이를 조합하여 사용한다.

요약하면, 패키지는 모듈들을 그룹핑하는 방법이고, 모듈은 특정 기능을 수행하는 코드 집합이다. 라이브러리는 모듈들의 집합으로 구성된 소프트웨어 코드 모음이며, 프레임워크는 여러 컴포넌트와 라이브러리를 포함하여 애플리케이션을 개발하는 데 사용되는 구조를 제공한다.

Q2. react 개발할 때 npm에서 다운 받는 것들은 무엇인가?

react-scheduler와 같은 것들은 보통 라이브러리(library)이다. 라이브러리는 개발자들이 자주 사용하는 기능을 묶어서 모듈(module)로 제공하는 것이며, 이러한 모듈들의 집합으로 라이브러리가 구성된다. 라이브러리는 개발자가 원하는 기능을 간단하게 사용할 수 있도록 돕는 것이 주요 목적이다.

npm은 Node Package Manager의 약자로, 자바스크립트 라이브러리를 포함한 패키지들을 관리하는 도구이다. 개발자들은 npm을 통해 필요한 라이브러리를 다운로드하고, 자신의 프로젝트에 적용할 수 있다. 따라서, react-scheduler와 같은 것들도 npm을 통해 다운로드하여 사용할 수 있는 라이브러리 중 하나이다.




참고문헌 : 개인 블로그, 위키

profile
최선이 반복되면 최고가 된다.

0개의 댓글