티스토리 뷰

반응형
라이브러리와 프레임워크, 같은 듯 다른 개발 도구의 모든 것

📚 라이브러리와 프레임워크, 같은 듯 다른 개발 도구의 모든 것

"코드를 짤 때 쓰는 도구라는데… 정확히 뭐가 다른 거지?"

개발을 처음 접하면, 자주 듣게 되는 두 용어가 있습니다. 바로 ‘라이브러리’‘프레임워크’입니다. 둘 다 프로그램을 만들 때 쓰는 도구이고, 코드를 덜 쓰게 해준다고 하니 비슷하게 느껴집니다. 하지만 이 둘은 아예 성격이 다르며, 제대로 구분하지 못하면 프로그램을 잘못 구성하거나, 시간과 노력을 낭비할 수 있습니다.

이 글에서는 왜 이런 도구들이 필요하게 되었는지, 무엇이 같고, 무엇이 다른지, 실제 예시를 통해 자연스럽게 이해하실 수 있도록 정리해드리겠습니다.


🔍 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가 이 코드를 자동으로 실행합니다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함
반응형