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 저장소를 참고해주시고, 궁금한 점은 댓글이나 메일로 문의해주세요.
프로젝트 요구사항
제작 전에 핵심 요구사항을 다음과 같이 정의해보았습니다.
- 모델링을 위해 Diagrams.net에서 개체-관계 다이어그램(ERD, Entity-Relationship Diagram)과 시퀀스 다이어그램(sequence diagram)을 작성한다.
- 장고와 DRF(Django REST framework)를 웹 프레임워크로 채택해 REST API 모델(model), 시리얼라이저(serializer), 뷰(view)를 작성한다.
- DRF에 알맞게 유닛 테스트(unit test)하며, drf-yasg를 이용해 Swagger API 문서화한다.
- AWS(Amazon Web Services) 클라우드 PaaS(Platform as a Service)에 도커(Docker)화 된 웹 애플리케이션을 배포한다.
- 웹 애플리케이션과 Nginx 웹 서버, MySQL 데이터베이스는 독립된 MSA(MicroService Architecture) 위에서 동작하며, 이를 위해 AWS ECS(Elastic Container Service), ECR(Elastic Container Registry), RDS(Relational Database Service), S3 등의 서비스를 사용한다.
- 모든 배포 과정은 GitHub Actions CI/CD(Continuous Integration/Continuous Delivery)를 통해 자동화한다.
다이어그램 모델링
그 후에는 기획과 모델링을 위한 다이어그램을 작성해보았습니다. 보통 현업에서 말하는 다이어그램은 데이터베이스 모델링을 위한 개체-관계 다이어그램, 사용자와 데이터베이스 간의 데이터를 주고받는 과정을 보여주는 시퀀스 다이어그램, 그리고 애플리케이션을 구성하는 코드의 객체 구조가 담긴 클래스 다이어그램(class diagram)이 대표적입니다.
장고와 DRF같은 현대 웹 프레임워크는 별도의 클래스 다이어그램 없이 객체지향프로그래밍(Object-Oriented Programming, OOP)을 최대한 할 수 있도록 많은 기능을 제공하고 있어, 저도 커머스를 위한 개체-관계 다이어그램과 시퀀스 다이어그램 정도만 다음과 같이 그려보았습니다. 그림은 Diagrams.net에서 무료로 그리고 구글 드라이브에 저장해 꾸준히 수정했습니다.
커머스 모델 개체-관계 다이어그램

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

'개발 > 웹' 카테고리의 다른 글
Django 커머스 보일러플레이트 - (3) 유닛 테스트, drf-yasg API 문서화 (0) | 2023.05.02 |
---|---|
Django 커머스 보일러플레이트 - (2) 장고/DRF 모델, 시리얼라이저, 뷰 (0) | 2023.05.01 |
Flask Microservice 구축 - GitHub Actions로 CI/CD 시스템 구축 (2) | 2023.03.01 |
Flask Microservice 구축 - Zappa로 AWS Lambda에 Flask Docker 띄우기 (0) | 2023.02.25 |
Flask Microservice 구축 - Zappa로 AWS Lambda에 Flask 띄우기 (0) | 2023.02.25 |
댓글