GPT에게 궁금한 내용을 물어보다가 문득 용어를 제대로 알고 있지 못하고 있다라는 생각에 기억을 하기 위해 정리한 내용
매번 기억을 한다고 생각하지만 헷갈려서 찾아보기 때문에 정리를 해두고 보는게 더 편할거 같아서 정리
1️⃣ 라이브러리 (Library)
✅ 정의:
특정 기능을 쉽게 사용할 수 있도록 미리 만들어진 코드 묶음
- 필요할 때 가져다 쓰는 코드 모음
- 개발자가 직접 하나하나 코드를 작성하지 않아도 반복적인 작업을 쉽게 해결할 수 있도록 지원
📌 비유:
🍱 "반조리 식품"
- 요리를 직접 다 만들지 않고, 반조리된 재료(라이브러리)를 사용하여 쉽게 완성하는 것과 같음.
- 예) 시중에서 파는 **양념된 고기(라이브러리)**를 사서 직접 요리하면 빠르고 간편함.
📌 예시:
✔ Python – NumPy, Pandas (데이터 분석용 라이브러리)
✔ JavaScript – Lodash (배열, 객체 조작 관련 기능 제공)
✔ React의 React Router (라우팅을 쉽게 할 수 있도록 제공)
📌 특징:
✔ 개발자가 원하는 부분만 골라서 사용 가능
✔ 독립적인 기능 제공 (애플리케이션의 구조를 강제하지 않음)
❌ 라이브러리만으로는 전체적인 앱을 만들기 어렵고, 특정 기능에 집중됨
2️⃣ 프레임워크 (Framework)
✅ 정의:
개발할 때 전체적인 구조와 흐름을 제공하는 틀(Framework)
- 프레임워크는 단순한 도구가 아니라, 개발 방식과 구조를 강제하는 틀
- 프레임워크를 사용하면 코드 작성 방식이 어느 정도 정해짐
📌 비유:
🏗 "집을 짓기 위한 건축 프레임"
- 라이브러리는 개별적인 벽돌 같은 도구이지만, 프레임워크는 집의 기본 설계를 제공하여 일정한 방식으로 지어야 함.
📌 예시:
✔ Django (Python) – 웹 개발 프레임워크
✔ Spring (Java) – 백엔드 개발 프레임워크
✔ React, Angular, Vue (JavaScript) – 프론트엔드 개발 프레임워크
✔ FastAPI (Python) – 비동기 API 개발 프레임워크
📌 특징:
✔ 개발 방식과 구조를 어느 정도 강제 (규칙을 따라야 함)
✔ 개발 속도를 빠르게 하고, 유지보수가 쉬움
❌ 특정한 방식에 맞춰야 하므로, 자유도가 떨어질 수 있음
3️⃣ 라이브러리 vs 프레임워크 차이점
항목라이브러리프레임워크
구조 강제 여부 | ❌ 강제하지 않음 (원하는 기능만 사용) | ✅ 개발 방식과 구조를 강제 |
개발자 주도 여부 | ✅ 개발자가 필요할 때 호출 | ❌ 프레임워크가 개발자의 코드를 호출 (제어 역전, IoC) |
예시 | NumPy, Pandas, React Router | Django, Spring, React, FastAPI |
비유 | 반조리 식품 – 필요한 것만 사용 | 레시피가 정해진 요리 키트 |
📌 한마디로 요약하면?
✅ 라이브러리: 개발자가 원하는 기능을 골라서 직접 사용
✅ 프레임워크: 전체적인 개발 구조를 정해주며, 개발자가 그 틀 안에서 코드를 작성해야 함
4️⃣ SDK (Software Development Kit)
✅ 정의:
특정 플랫폼(운영체제, 앱, 하드웨어)에서 개발할 수 있도록 제공하는 도구 모음
- 라이브러리 + API + 예제 코드 + 개발 도구(에뮬레이터, 디버깅 툴) 등이 포함된 패키지
- 특정 플랫폼(Windows, Android, iOS 등)에서 개발할 때 필수적임
📌 비유:
🧰 "DIY 가구 키트"
- IKEA에서 가구를 조립할 때, 필요한 도구(드라이버, 나사, 설명서)를 한 번에 제공하는 것과 비슷함.
- SDK도 개발자가 특정 플랫폼에서 작업할 수 있도록 필요한 모든 도구를 제공함.
📌 예시:
✔ Android SDK – 안드로이드 앱 개발용 SDK
✔ iOS SDK – iOS 앱 개발용 SDK
✔ AWS SDK – AWS 서비스를 쉽게 사용할 수 있도록 도와줌
📌 특징:
✔ 플랫폼에서 개발할 때 필수적인 도구 제공
✔ 라이브러리보다 더 광범위한 기능 포함
❌ 특정 플랫폼에 종속될 가능성이 있음
5️⃣ API (Application Programming Interface)
✅ 정의:
다른 소프트웨어나 서비스와 상호작용할 수 있도록 제공하는 인터페이스
- 외부 서비스나 시스템과 연결할 때 API를 사용함
📌 비유:
🍽 "음식 배달 앱"
- 음식 배달 앱에서 여러 식당의 메뉴를 가져와 주문할 수 있음.
- API는 앱과 식당을 연결하는 역할을 하는 것과 같음.
📌 예시:
✔ OpenAI GPT API – GPT 모델과 상호작용 가능
✔ Google Maps API – 지도 정보를 가져올 수 있음
✔ Twitter API – 트윗을 읽거나 작성 가능
📌 특징:
✔ 다른 서비스나 프로그램과 연결할 수 있도록 함
✔ REST API, GraphQL 등 다양한 방식이 있음
❌ 제공된 기능만 사용할 수 있음
📌 최종 정리
용어정의비유예시
라이브러리 (Library) | 특정 기능을 쉽게 사용할 수 있도록 만든 코드 모음 | 🍱 반조리 식품 (필요한 것만 골라 사용) | NumPy, Pandas, React Router |
프레임워크 (Framework) | 개발 구조와 패턴을 제공하여 일정한 방식으로 개발하도록 함 | 🏗 건축 설계도 (틀 안에서 개발) | Django, Spring, React, FastAPI |
SDK (Software Development Kit) | 특정 플랫폼에서 개발할 수 있도록 제공하는 도구 모음 | 🧰 DIY 가구 키트 | Android SDK, AWS SDK, iOS SDK |
API (Application Programming Interface) | 외부 서비스와 상호작용할 수 있도록 제공하는 인터페이스 | 🍽 음식 배달 앱 (앱과 식당을 연결) | OpenAI API, Google Maps API, Twitter API |
📌 요약하면?
✅ 라이브러리 → 기능별로 골라서 사용
✅ 프레임워크 → 개발 구조를 강제하는 틀
✅ SDK → 특정 플랫폼에서 개발할 수 있도록 지원하는 도구 모음
✅ API → 다른 서비스와 연결할 수 있도록 제공하는 인터페이스
'IT 끄적이기' 카테고리의 다른 글
LLM과 RAG의 차이점 및 관계 (2) | 2025.02.18 |
---|---|
Network Engineer 및 Technical Architect 기술 간단 정리 (0) | 2025.01.23 |
Network (L2/L3) 기술보유자란? (1) | 2025.01.23 |
IT 인프라 아키텍처란 무엇인가? (0) | 2025.01.20 |
파이썬 디렉토리에 따른 실행 원리 (0) | 2025.01.10 |