해결된 질문
작성
·
74
0
안녕하세요. FastAPI 프로젝트의 폴더 구조에 대해서 궁금한 점이 생겨서 질문 드립니다.
처음에는 라우터에 모든 로직을 넣어서 라우터와 Repository만 분리해서 개발을 하다가, 3 레이어드 아키텍처로 분리를 좀 해볼까 생각이 들었습니다.
controller, service, repository 이렇게 나누어 보려고 하는데요. 예를들어 user, board와 같은 도메인이 있다고 하면, 각 폴더를 도메인별로 나누어서 구조를 잡는게 좋을까요? 아니면, controller 폴더 안에 user_controller.py, board_controller.py 등의 파일들이 모여있는게 좋을까요?
선생님께서는 실무에서 어떻게 폴더 구조를 가져가시는지도 궁금합니다.
감사합니다.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 뱅준님.
FastAPI와 같은 백엔드 프레임워크에서는 일반적으로 코드의 유지보수성, 확장성을 고려하여 폴더 구조를 설계합니다. 3 레이어드 아키텍처(controller, service, repository)로 분리하는 것은 좋은 선택입니다. 도메인별로 폴더를 나누는 방법과, controller/service/repository 등 레이어별로 나누는 방법 모두 각각의 장단점이 있으므로 다음과 같이 설명드릴 수 있습니다.
도메인별 분리:
레이어별 분리:
실무에서는 프로젝트의 요구사항, 팀의 선호도, 프로젝트 규모에 따라 다르게 접근할 수 있습니다.
관련된 유사 질문에 대한 답변을 참고하실 수 있도록 몇 가지 링크를 드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다. 추가로 질문이 있는데요. 도메인에 대한 정의는 어떻게 하는게 좋을까요? 다루는 모델? 컨트롤 하고자 하는 주체?
이전에는 다루는 모델을 도메인으로 정의했는데, 폴더가 너무 많아져서 복잡해지더라구요.