본문 바로가기
Python/Django

[TIL] 프레임워크에 대해

by 좌우지간에 2025. 1. 6.

 

📌 TIL 프레임워크에 대해 🌎

개발을 하다 보면 다양한 도구를 사용하게 됩니다. 🛠️ 코드를 효율적으로 작성하고, 복잡한 문제를 해결하는 데 도움을 주는 도구들이죠. 그중에서도 자주 접하게 되는 것이 바로 라이브러리(Library)프레임워크(Framework)입니다. 📚🏗️ 이 두 가지는 개발 생산성을 높여주는 중요한 역할을 하지만, 그 작동 방식과 목적에는 분명한 차이가 있습니다. 오늘은 이 둘의 차이점을 명확히 알아보고, 웹 개발 프레임워크인 Django를 예시로 자세히 살펴보겠습니다. 🔎

 


 

 

📌 프레임워크와 라이브러리의 핵심 차이: '제어의 역전' 🔄

가장 중요한 차이는 바로 '제어의 역전(Inversion of Control)'이라는 개념입니다. 🧐 쉽게 말해, 누가 프로그램을 주도적으로 움직이느냐의 차이입니다. 🕹️

 

  • 라이브러리 📚: 필요할 때 도구를 가져다 쓰는 것과 같습니다. 🛠️ 코드를 작성하면서 특정 기능이 필요할 때, 그 기능을 제공하는 라이브러리를 불러 사용합니다. 🙋‍♀️ 코드를 주도적으로 작성하고, 라이브러리는 코드의 일부를 도와주는 역할입니다. 🤝
    • 예시: 파이썬의 math 라이브러리 🧮. 수학 계산이 필요할 때 import math를 해서 math.sqrt(숫자)와 같이 함수를 불러 사용합니다. 이때 프로그램 흐름의 주도권은 사용자에게 있습니다. 💪
  • 프레임워크 🏗️: 미리 만들어진 집의 뼈대와 같습니다. 🏠 프레임워크가 제공하는 구조 안에서 코드를 작성해야 합니다. 🧱 프레임워크가 정해놓은 규칙과 틀에 맞춰 코드를 작성하고, 프레임워크가 전체적인 프로그램 흐름을 주도합니다. 🚦 작성하는 코드는 그 틀 안에서 필요한 기능을 구현하는 역할입니다. 🧩
    • 예시: Django 프레임워크 🕸️. Django는 웹 애플리케이션을 만들기 위한 기본적인 구조(모델, 뷰, 템플릿 등)를 제공하고, 개발자는 이 구조에 맞춰 코드를 작성해야 합니다. ✍️ Django의 규칙을 따르지 않으면 제대로 작동하지 않습니다. ⚠️

 

쉽게 비유하면:

  • 라이브러리 🧱: "레고 블록"과 같습니다. 원하는 모양을 만들기 위해 레고 블록들을 가져다 사용하는 것입니다. 🎨
  • 프레임워크 📝: "레고 조립 설명서"와 같습니다. 설명서에 나온 대로 블록을 조립해야 원하는 결과물을 얻을 수 있습니다. 🗺️

 

 

 

🧩 프레임워크 (Django) 더 자세히 알아보기 🔎

Django는 웹 개발을 위한 풀스택 프레임워크입니다. 🌐 웹 사이트의 모든 부분(데이터베이스 관리, 서버 처리, 화면 구성 등)을 한 번에 처리할 수 있는 틀을 제공합니다. ⚙️

  • Django의 역할 ⚙️:
    • 웹 서버 실행 🚀: 웹페이지를 보여주기 위한 서버 기능을 제공합니다.
    • URL 라우팅 🔗: 사용자가 특정 URL로 접속했을 때 어떤 코드를 실행할지 결정합니다.
    • 데이터베이스 연동 🗄️: 데이터 저장 및 관리를 쉽게 할 수 있도록 도와줍니다.
    • 템플릿 엔진 🖼️: HTML과 데이터를 결합하여 웹 페이지를 동적으로 생성합니다.
    • 보안 기능 🛡️: 사용자 인증, CSRF 공격 방어 등 웹 보안 관련 기능을 제공합니다.
  • Django 개발자의 역할 👩‍💻👨‍💻:
    • 모델(Model) 정의 📝: 데이터베이스에 저장할 데이터를 구조화합니다.
    • 뷰(View) 함수 작성 ✍️: 사용자의 요청을 받아 처리하고, 응답을 생성합니다.
    • 템플릿(Template) 작성 🎨: 웹 페이지의 디자인과 내용을 정의합니다.
    • URL 설정 🔗: 어떤 URL로 접속했을 때 어떤 뷰 함수를 실행할지 결정합니다.

 


 

 

🙋‍♀️ 그래서 요약하자면 📝

  1. 프레임워크와 라이브러리 정의 💡:
    • 라이브러리: 특정 기능을 수행하는 '도구' 🛠️. 사용자가 주도적으로 사용합니다. 🙋‍♀️
    • 프레임워크: 프로그램의 큰 '틀' 🏗️을 제공합니다. 프레임워크가 프로그램 흐름을 주도합니다. 🚦
  2. 핵심 차이 (제어의 역전) 🔄:
    • 라이브러리: 사용자가 코드를 주도합니다. 💪
    • 프레임워크: 프레임워크가 흐름을 주도합니다. 🚦
  3. 비유 설명 🎭:
    • 라이브러리: 레고 블록 🧱
    • 프레임워크: 레고 조립 설명서 📝
  4. Django 프레임워크 예시 🕸️:
    • 웹 개발을 위한 뼈대 역할입니다. 🏗️
    • 웹 서버 실행, URL 라우팅, 데이터베이스 연동 등을 제공합니다. ⚙️
    • 개발자는 Django의 틀 안에서 코드를 작성해야 합니다. ✍️
  5. 결론 🏁:
    • 라이브러리는 코드를 더 효율적으로 작성하도록 도와주는 도구입니다. 🛠️
    • 프레임워크는 프로그램의 구조를 제공하여 개발 생산성을 높여줍니다. 🚀