본문 바로가기
개발/웹

Django 커머스 보일러플레이트 - (1) 프로젝트 요구사항과 다이어그램 모델링

by pandatta 2023. 4. 30.

Django 커머스 보일러플레이트 시리즈

(1) 프로젝트 요구사항과 다이어그램 모델링
(2) 장고/DRF 모델, 시리얼라이저, 뷰
(3) 유닛 테스트, drf-yasg API 문서화
(4) Nginx 웹 서버와 도커 컴포즈, AWS ECS 배포
(5) GitHub Actions CI/CD

안녕하세요, 판다타입니다.

한동안 파이썬 웹 프레임워크 삼대장 플라스크(Flask), 장고(Django), 패스트API(FastAPI) 중, 회사에서는 사용하지 않는 장고를 이용해 e-커머스(e-commerce) 제작에 사용할 수 있는 보일러플레이트(boilerplate)를 만들어보았습니다. 진행한지는 꽤 되어서 한꺼번에 몰아서 작성하다보니 자세한 설명을 하기는 어렵고... 여러분의 장고 프로젝트 작성에 도움이 될까 하여 간단하게 몇 가지를 정리해보았습니다. 자세한 소스코드는 Djarf GitHub 저장소를 참고해주시고, 궁금한 점은 댓글이나 메일로 문의해주세요.

프로젝트 요구사항

제작 전에 핵심 요구사항을 다음과 같이 정의해보았습니다.

  1. 모델링을 위해 Diagrams.net에서 개체-관계 다이어그램(ERD, Entity-Relationship Diagram)과 시퀀스 다이어그램(sequence diagram)을 작성한다.
  2. 장고와 DRF(Django REST framework)를 웹 프레임워크로 채택해 REST API 모델(model), 시리얼라이저(serializer), 뷰(view)를 작성한다.
  3. DRF에 알맞게 유닛 테스트(unit test)하며, drf-yasg를 이용해 Swagger API 문서화한다.
  4. AWS(Amazon Web Services) 클라우드 PaaS(Platform as a Service)도커(Docker)화 된 웹 애플리케이션을 배포한다.
  5. 웹 애플리케이션과 Nginx 웹 서버, MySQL 데이터베이스는 독립된 MSA(MicroService Architecture) 위에서 동작하며, 이를 위해 AWS ECS(Elastic Container Service), ECR(Elastic Container Registry), RDS(Relational Database Service), S3 등의 서비스를 사용한다.
  6. 모든 배포 과정은 GitHub Actions CI/CD(Continuous Integration/Continuous Delivery)를 통해 자동화한다.

다이어그램 모델링

그 후에는 기획과 모델링을 위한 다이어그램을 작성해보았습니다. 보통 현업에서 말하는 다이어그램은 데이터베이스 모델링을 위한 개체-관계 다이어그램, 사용자와 데이터베이스 간의 데이터를 주고받는 과정을 보여주는 시퀀스 다이어그램, 그리고 애플리케이션을 구성하는 코드의 객체 구조가 담긴 클래스 다이어그램(class diagram)이 대표적입니다.

장고와 DRF같은 현대 웹 프레임워크는 별도의 클래스 다이어그램 없이 객체지향프로그래밍(Object-Oriented Programming, OOP)을 최대한 할 수 있도록 많은 기능을 제공하고 있어, 저도 커머스를 위한 개체-관계 다이어그램과 시퀀스 다이어그램 정도만 다음과 같이 그려보았습니다. 그림은 Diagrams.net에서 무료로 그리고 구글 드라이브에 저장해 꾸준히 수정했습니다.

커머스 모델 개체-관계 다이어그램

커머스 시퀀스 다이어그램: 고객이 카트에 담은 상품을 주문하는 과정

 

댓글