본문 바로가기
Backend 🖥️

프레임워크(Framework)란?

by 봄설날 2024. 7. 24.

#1 Framework란 무엇인가?

프레임워크(Framework)는 소프트웨어 개발에서 특정 작업을 수행하기 위한 기본 구조와 규칙을 제공하는 소프트웨어 플랫폼!!

프레임워크는 개발자들이 일관된 방식으로 애플리케이션을 개발할 수 있도록 도와주며, 코드의 재사용성과 유지보수성을 높혀준다.

 

프레임워크의 특징이 몇가지 있는데 짧게 참고만 하고 넘어가겠다.

추상화: 프레임워크는 복잡한 시스템의 주요 개념과 기능을 추상화하여 제공한다. 개발자는 이러한 추상화를 통해 세부 사항에 얽매이지 않고 고수준의 작업에 집중할 수 있다.

재사용성: 프레임워크는 공통된 기능을 미리 구현해 놓아, 개발자가 이를 재사용할 수 있도록 한다. 이는 코드의 중복을 줄이고 유지보수를 용이하게 한다.

구조화: 프레임워크는 소프트웨어 개발을 위한 일관된 구조를 제공한다. 이를 통해 개발자는 프로젝트의 일관성을 유지하고, 협업 시에도 코드의 가독성과 이해도를 높일 수 있다.

확장성: 대부분의 프레임워크는 확장을 염두에 두고 설계된다. 개발자는 필요에 따라 프레임워크의 기능을 확장하거나 커스터마이징할 수 있다.

#2 Framework와 Library의 차이는 무엇인가?

프레임워크

애플리케이션의 구조와 흐름을 제어하며, 다양한 기능을 통합적으로 제공하여 개발자가 그 구조에 맞춰 코드를 작성하도록 한다.

라이브러리

특정 기능을 수행하기 위한 도구 모음으로, 개발자가 필요할 때 호출하여 사용한다.

 

#3 Python 계열의 Framework

아무래도 Python으로 프로젝틀 진행하다보니 Python 계열의 프레임워크에 대해 알아보았다.

 

Django, Flask, FastAPI 

 

1.Django

풀스택 프레임워크로 웹 개발에 필요한 모든 기능을 제공

  • MTV 패턴 사용
    MVC 패턴의 변형인 MTV 패턴을 따른다. MVC, MTV 패턴에 대해서는 나중에 따로 다뤄보겠다.
    링크
  • ORM(Object-Relational Mapping)
    다양한 데이터베이스를 지원하며, 모델 간의 관계를 쉽게 설정할 수 있다.
    즉 ORM은 데이터베이스 조작을 단순화하고, SQL을 직접 작성할 필요 없이 Python 코드로 데이터베이스를 다루게 해둔다. MTV 패턴에서 models.py 파일이 바로 데이터베이스를 담당하는 파일이 되는것이다.ㅓ
  • 관리자 인터페이스
    자동으로 생성되는 관리자 인터페이스를 통해 데이터를 쉽게 관리할 수 있다. 커스터마이징이 가능하며, 다양한 애드온을 추가할 수 있다. 로컬로 접속할 때 localhost:8000/admin 에서 확인할 수 있다.
  • 그 외 특징
    보안기능 내장, URL 라우팅, 템플릿 시스템... 당장은 이러한 특징이 있다는 사실만 알아두자.

2. Flask

경량화된 마이크로 프레임워크로, 단순하고 유연한 웹 개발에 유리

  • 마이크로 프레임워크
    기본적인 기능만 제공하며, 필요한 기능은 플러그인이나 확장성을 통해 추가할 수 있다. Django의 경우 프레임워크 자체가 무겁다는 단점이 있는데 간단한 기능만 필요할 경우 Flask를 사용할 수 있는 것이다.
  • 확장 가능성
    다양한 확장을 통해 데이터베이스, 폼 처리, 인증 드으이 기능을 추가 할 수 있다. 주로 SQLAlchemy, Flask-RESTful, Flask-Security 등 을 사용하여 DB관리나 보안에 신경을 쓸 수 있다.
  • Werkzeug WSGI 라이브러리
    Flask는 Werkzeug를 기반으로 하며, 이를 통해 HTTP 요청과 응답을 처리한다. Django의 경우 WSGI 웹 통신을 위해 Gunicorn을 설치해줘야 하지만 Flask는 자체적으로 사용할 수 있는 것이다.
  • 그 외 특징
    단순한 라우팅, 템플린 엔진, 테스트 지원 등의 몇가지 특징이 더 있다.

3. FastAPI

고성능 비동기 API 서버 개발

  • 빠른 성능
    이름에서도 알 수 있듯이 현대적이고 빠른것이 특징이다. 비동기 프로그래밍을 기본적으로 지원하기 때문에, 이를 통해 높은 성능을 제공한다.
  • 데이터 모델링
    데이터 검증 및 설정을 위해 Pydantic을 사용한다 이를 통해서 데이터 타입을 명확하게 정의하고, 자동 검증 및 직렬화를 수행할 수 있다.
  • 자동 문서화
    OpenAPI 및 JSON Schema 표준을 사용하여 API 문서를 자동으로 생성하고 Swagger UI와 Redoc을 통해 자동으로 문서화 인터페이스를 제공한다.
  • 그 외 특징들
    Starlette 기반의 빠른 요청 처리, 데코레이터를 사용한 간단한 라우팅 등의 특징이 있다.

정리해보면

Django는 대규모 프로젝트와 강력한 보안 기능이 필요한 경우, FastAPI는 고성능 API와 비동기 처리가 필요한 경우, 
Flask는 유연성과 간단함이 중요한 소규모 프로젝트

 

내가 Django를 사용한 이유
MTV 패턴을 사용하기 때문에 팀원들과 디렉토리 구조를 맞추는데에 어려움이 없었고, 기본적으로 제공해주는 기능이 많아 개발이 처음인 초보자에게 적합하다고 판단했다.

'Backend 🖥️' 카테고리의 다른 글

ORM이란?  (0) 2024.07.24
Database 와 SQL  (0) 2024.07.24
Swagger와 Postman  (0) 2024.07.24
웹통신이란?  (0) 2024.07.24
REST API 란? (REST, RESTful 에 대하여)  (0) 2024.03.27