티스토리 뷰
📚 라이브러리와 프레임워크, 같은 듯 다른 개발 도구의 모든 것
"코드를 짤 때 쓰는 도구라는데… 정확히 뭐가 다른 거지?"
개발을 처음 접하면, 자주 듣게 되는 두 용어가 있습니다. 바로 ‘라이브러리’와 ‘프레임워크’입니다. 둘 다 프로그램을 만들 때 쓰는 도구이고, 코드를 덜 쓰게 해준다고 하니 비슷하게 느껴집니다. 하지만 이 둘은 아예 성격이 다르며, 제대로 구분하지 못하면 프로그램을 잘못 구성하거나, 시간과 노력을 낭비할 수 있습니다.
이 글에서는 왜 이런 도구들이 필요하게 되었는지, 무엇이 같고, 무엇이 다른지, 실제 예시를 통해 자연스럽게 이해하실 수 있도록 정리해드리겠습니다.
🔍 1. 왜 이런 도구가 필요한 걸까?
처음 컴퓨터 프로그램이 만들어지던 시절, 개발자들은 모든 기능을 처음부터 하나하나 다 직접 만들어야 했습니다.
- 숫자를 정렬하려면 정렬하는 알고리즘을 직접 짜야 했고,
- 파일을 읽거나 저장하려면 운영체제의 아주 복잡한 명령어를 직접 다뤄야 했습니다.
이런 방식은 시간도 오래 걸리고, 실수도 많아지고, 비효율적이었습니다.
어차피 자주 쓰는 기능이라면, 아예 잘 만들어진 코드를 미리 묶어두면 어떨까?
이렇게 해서 만들어진 것이 바로 ‘라이브러리’입니다.
그리고 시간이 더 흐르자 또 다른 고민이 생겼습니다.
"반복되는 기능만 있는 게 아니라, 앱 전체의 구조도 매번 비슷하지 않나?"
"이 구조까지 미리 설계해두면 더 좋지 않을까?"
이 질문에서 출발한 것이 바로 ‘프레임워크’입니다.
📘 2. 먼저 ‘라이브러리’부터 알아봅시다
📌 정의
라이브러리(Library)란, 자주 쓰는 기능들을 묶어놓은 도구 모음입니다.
마치 요리를 할 때 칼, 도마, 프라이팬 같은 도구처럼, 개발자가 필요할 때 꺼내서 쓸 수 있도록 준비된 코드들의 모음입니다.
📦 예를 들어 보면
- 숫자들을 빠르게 정렬하는 기능 (
sort
) - 날짜 계산 기능 (
datetime
) - 인터넷에서 정보 가져오기 (
requests
)
import math
result = math.sqrt(16)
print(result) # 출력: 4.0
우리는 루트를 어떻게 계산하는지 몰라도 괜찮습니다.
🏗️ 3. 이제 ‘프레임워크’를 알아봅시다
📌 정의
프레임워크(Framework)는, 프로그램 전체의 골격(뼈대)을 제공하고, 그 안에 필요한 기능을 채워 넣도록 돕는 틀입니다.
🧩 비유로 말하자면
- 라이브러리는 내가 요리할 때 꺼내 쓰는 칼이나 프라이팬
- 프레임워크는 아예 요리법, 주방 구조, 레시피 순서까지 포함된 요리 키트
🛠️ 예를 들어 보면
def show_home(request):
return render(request, 'home.html')
이 함수는 우리가 직접 실행하는 게 아니라, 웹사이트에 방문자가 들어오면 Django가 자동으로 실행시켜주는 구조입니다.
이걸 제어의 역전(Inversion of Control)이라고 합니다.
⚖️ 4. 둘의 가장 핵심적인 차이점: "누가 주도권을 쥐고 있는가?"
✔️ 라이브러리
- 개발자가 중심입니다.
- 필요할 때 직접 불러서 씁니다.
예: "정렬이 필요하네? sort()
호출해야지."
✔️ 프레임워크
- 프레임워크가 중심입니다.
- 정해진 흐름 속에서, 프레임워크가 내 코드를 불러냅니다.
“Don’t call us, we’ll call you.”
“우리를 호출하지 마세요. 우리가 당신을 부를게요.”
📊 5. 표로 한눈에 정리하기
구분 | 라이브러리 | 프레임워크 |
---|---|---|
중심이 되는 주체 | 개발자 | 프레임워크 |
제어 흐름 | 개발자가 직접 호출함 | 프레임워크가 개발자 코드를 호출함 |
사용 방식 | 필요한 기능만 골라서 사용 | 정해진 구조에 따라 코드를 작성해야 함 |
유연성 | 높음 | 제한적 |
예시 | NumPy, Pandas, Math, Requests 등 | Django, Flask, Angular, React, Vue 등 |
🧪 6. 실제 예시로 구분해보기
▶️ 라이브러리: Pandas (데이터 처리)
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
Pandas는 내가 시킨 대로만 작동합니다.
▶️ 프레임워크: Django (웹 개발)
def home(request):
return render(request, 'index.html')
사용자가 웹사이트를 방문하면 Django가 이 코드를 자동으로 실행합니다.
'자격증 > 정보처리기사' 카테고리의 다른 글
인터페이스 데이터 포맷 완전 정리 (0) | 2025.04.30 |
---|---|
대칭 vs 비대칭 암호 알고리즘 (0) | 2025.04.29 |
선점형(Preemptive) vs 비선점형(Non-Preemptive) 스케줄링 완전 정리 (0) | 2025.04.28 |
프로세스 스케줄링 요약 (0) | 2025.04.28 |
프로세스 스케줄링 완전 정리 (0) | 2025.04.28 |
- Total
- Today
- Yesterday
- C
- 심리학
- C/C++
- 보세사
- 백준
- 통계학
- 뇌와행동의기초
- 일본어문법무작정따라하기
- 인프런
- 류근관
- stl
- 윤성우
- 일문따
- 일본어
- 열혈프로그래밍
- 파이썬
- c++
- 통계
- 여인권
- Python
- 코딩테스트
- K-MOOC
- 데이터분석
- 사회심리학
- 회계
- 강화학습
- 정보처리기사
- 티스토리챌린지
- 인지부조화
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |