Backend/Django

Django 실전 운용 - 1. Project Base 구축 필요성 (요구 사항과 필요한 기술)

뒷골목프로그래머 2022. 12. 23. 09:09
반응형

본 시리즈는 Python과 Django Backend 개발 경험이 있으신 분들을 대상으로 작성되었습니다.

 

 

안녕하세요.

글쓰는 개발자 입니다.

 

 다수의 다양한 Project를 수주 받는 SI회사에서 Project 초기 세팅 비용 최소화 및 회사 차원의 기술 축적을 위해 수행한 Project Base 구축 과정을 시리즈로 소개합니다. 시리즈의 첫 번 째로 제가 어떠한 동기부여로 이 목표를 달성했으며, 무엇을 이루고자 했는지 소개하겠습니다. 

1. Project Base 구축 필요성 (요구 기능과 필요한 기술)
2. Django project 생성
3. Django, mariaDB, Redis with Docker Compose (예정)
4. settings.py 개발 환경, 운영 환경 분리 (예정)
5. Logging (예정)
6. Error Log 관리자 email 전송 (예정)
7. Django, Celery, Redis 활용 email 전송 비동기 처리 (예정)
8. Django, Celery, Celery Beat 활용 scheduling (예정)

 

 만 2년을 조금 넘기는 경력 동안 3개의 프로젝트를 완수 했습니다. 회사 전체로 확대하면, 같은 기간 동안 수십 개의 프로젝트를 수행했을 것입니다. Backend의 경우, Project를 혼자 수행하는 경우도 있고, 2명 혹은 3명이 함께 수행하는데 서로 다른 프로젝트를 진행 중인 개발자들 끼리 대화를 하면서 비슷한 문제의식을 갖고 있다는 것을 확인하였습니다.

 

"프로젝트별로 매번 초기 세팅 작업을 반복하고 있다."
"Git에 이미 많은 프로젝트가 있지만 세팅에 곧바로 활용하기 어렵다."

 

 

 회사의 개별 구성원 또는 Project별 매번 아래와 같이 python 가상환경을 생성하고 각종 package (Django, Django Restframework 등) 설치를 반복하며, Controller - Service - Repo 형태의 Structure 구축을 모두가 밑 바닥 부터 반복하고 있다는 생각이 들자, 개선해야겠다는 생각이 들었고, 실행에 옮기게 되었습니다.

 

mkdir project
cd project
python -m .venv venv
source .venv/bin/activate
pip install django ...

 

 저는 다음과 같이 문제와, 요구 사항, 기술 스택을 정의하였습니다.

 

1. 문제 정의

     1) 구성원 및 Project 별 초기 세팅 중복 수행 (마치 기능이 중복되는 지저분한 코드 처럼)

     2) 다수의 Project 경험에도 불구하고 참여 인력 개인의 기술 축적은 있지만, 회사의 기술 축적은 없음

     3) 비슷한 도메인의 Project 경험이 있음에도 신규 Project 세팅 속도는 그대로임

 

2. 요구 사항 정의

     1) git clone 후 환경 변수 설정만 완료하면, 개발/운영 환경 모두 실행 가능

     2) Logging, Error email 발송 등 운영 환경 필요 기능 포함

     3) 비동기 기능 사용을 위한 Celery 연동

     4) Controller - Service - Repository Structure 적용

 

3. 기술 스택

     1) Python 3.11

     2) Django 4.1.4

     3) MariaDB 10.7.3

     4) Celery 5.2.7

     5) Redis

     6) Docker, Docker Compose

 

 앞으로 시리즈를 통해, 저와 비슷한 고민을 하시는 분들과 Django Backend 를 경험해보았지만 '제대로 하고 있는 걸까?' 하는 고민이 있으신 분들께 도움이 되시길 바랍니다. 또한, 경험이 풍부하신 독자 분은 부족한 부분에 대해 가르침을 주시면 감사하겠습니다.

반응형