본문 바로가기
Develop/Django

django로 시작하는 서비스 개발 (1)

by J0DEV 2024. 3. 10.
반응형

django로 시작하는 서비스 개발

들어가며

앞으로의 과정

django를 사용하여 서비스를 개발하는 것이 이 포스팅의 주요 목표입니다.
장고(d는 묶음입니다.)를 사용하여 게시판 형태의 서비스를 개발해볼것입니다.
장고의 주요 특징 중, 하나인 풀스택 프레임워크의 장점을 살려, 웹과 API 모두 개발할 예정입니다.
  • 개발 환경 설정
    • git, vscode, env 등
  • hello django
    • django 설치 및 실행
  • 기능 정의 및 설계
    • 앞으로 개발할 기능과 설계
  • 기능 개발 및 테스트
    • 유저, 인증, 게시글, 댓글 등
  • 배포
    • 도커 & 도커 컴포즈를 사용한 서비스 배포

 

django란 무엇인가?

장고는 파이썬의 웹 프레임워크 중 하나입니다.

파이썬 진영에는 아주 많은 웹 프레임워크들이 있습니다.

Flask, Fast API 등 여러 프레임워크들이 존재하지만각 프레임워크마다의 장단점이 존재합니다.

분류 Flask Django FastAPI
장점 매우 간단하고 가벼운 프레임워크입니다.
엄청 유연하며, 빠른 개발이 가능하여 소규모 서비스 또는 프로토타입에 적합합니다.
풀스택 프레임워크입니다.
MTV 모델(MVC와 비슷합니다.)과 ORM을 제공하고, 충분히 많고 강력한 내장 기능을 제공합니다.
프레임워크로서 제공하는 표준화가 충분하며, 유연한 확장성을 제공합니다.
공식 문서가 잘 제공되며 커다란 오픈 소스 커뮤니티가 존재합니다.
최신 프레임워크로 비동기 기반입니다. 
Swagger 문서를 자동 생성해줍니다.
높은 가독성 관리성을 제공합니다.
단점 내장 기능이 부족합니다.
경우에 따라 설치해야할 라이브러리들이 많습니다.
프레임워크로서 제공하는 표준화가 부족합니다.
기본적인 내장 기능이 많음으로 다른 프레임워크와 비교했을 때 일부 성능이 떨어지는 영역이 있습니다.
장고 프레임워크 자체에 대한 러닝 커브가 존재합니다.
프레임워크로서 제공하는 표준화가 충분하나, 장고 프레임워크를 잘모르고 개발할 경우, 프로젝트 구조나 코드의 관리가 어려워집니다.
아직 메이저 버전이 나오지 않았습니다.
다른 프레임워크에 비해 커뮤니티가 빈약하며 러닝 커브가 존재합니다. 기본적인 내장 기능이 부족합니다.
개인적인 평가 소규모 서비스 또는 프로젝트를 빠른 시간 내에 개발하여 제공하는데 좋습니다.
하지만 프로젝트 규모가 커지거나 많은 개발자들이 함께 개발하면 코드의 통일성이 없어지고, 관리하는데 많은 어려움을 겪는 것 같습니다. 
일반적인 서버, 웹 서비스를 개발하는데 좋습니다.
러닝 커브가 있으며, 잘모르고 개발 할 경우, 관리하는데 어려움이 존재합니다.
실시간 관련된 비동기 처리에 대한 기본적인 성능과 지원이 다른 프레임워크에 비해 뒤떨어집니다.
고성능 API 나 실시간 / 비동기 서비스를 개발하는데 좋습니다.
비동기에 대한 이해/경험이 없다면 러닝 커브가 존재합니다.
메이저 버전이 나오지 않았습니다.

 

위의 3 프레임워크는 파이썬 진영에서 가장 유명하고 많이 쓰는 프레임워크입니다.

공통적인 장점이자 단점은 Python 언어의 특징을 그대로 가져온다고 보시면 됩니다.

이 외에도 여러 장단점이 있지만 기술을 선택함에 있어 다양한 요소를 고려해야합니다.

 

왜 django인가?

결국 언어의 선택과 마찬가지로 프레임워크의 선택도 주어진 요소들에 따른 선택의 결과입니다.

제 경우, FastAPI가 아직 한국에 상륙하기전, Flask와 Django를 사용했었습니다.

지금도 간단한 기능 단위의 POC나 프로토타입을 개발하는 경우 Flask 를 종종 사용하고는 합니다.

(기능 단위에서 벗어나면 Django를 사용합니다. 당장 로그인 기능만 하더라도 장고로는 뚝딱 하고 다양한 요소들이 반영된 기능이 개발됩니다.)

 

아직까지는 Fast API 에 대해서는 회의적인 생각을 가지고 있습니다.

성능이 매우 좋다고는 하지만 마이너 버전이고 내장 기능이 부족합니다.

(차라리 고성능의 실시간 채팅 서비스를 개발한다면, python을 굳이 사용하지 않아도 됬을때, 저는 node를 선택할 것입니다.)

 

현 시점에서는 Python 기반의 WEB / API Server를 개발한다면 Django를 선택할 것입니다.

하지만 다가올 미래에 FastAPI가 대세가 될것임을 짐작하고 있습니다.

(Fast API도 공부해야하지만 Python에 친숙하고, 하나 이상의 프레임워크에 친숙하다면 금방 공부할 수 있습니다.)

 

장고 공부 & 개발시 참고하면 좋은 사이트들

https://www.djangoproject.com/
https://tutorial.djangogirls.org/ko/django/

 

 

 

반응형