[ 아키텍처 공부 ] MSA & DDD 패턴을 적용한 프로젝트 예시 ( 기간 : 2024.08.19 ~ 2024.08.23 )
Initial written at August 21, 2024 last updated at: August 21, 2024
- ver 1.0.0.
- FastAPI Container 추가
- ver 1.0.1.
- SpringBoot Container 추가
- ver 1.0.2.
- FastAPI 설정 추가 ( Swagger, CORS 등 )
- ver 1.0.3.
- FastAPI + MariaDB 연동 & MariDB 데이터베이스, 테이블 자동 생성
.env.template
파일을 참고하여 .env
파일에 환경 변수값을 작성해주세요.
# 예시
FASTAPI_HOST_PORT=8001
FASTAPI_SERVER_PORT=8000
SPRINGBOOT_HOST_PORT=8081
SPRINGBOOT_SERVER_PORT=8080
MARIADB_HOST_PORT=3307
MARIADB_SERVER_PORT=3306
MARIADB_ID=root
MARIADB_ROOT_PASSWORD=12345678
MAREADB_DATABASE=sample
FASTAPI_HOST_PORT
와 fastapi-service/entrypoint.sh
의 포트 번호를 일치시켜주세요
uvicorn service.main:app --host 0.0.0.0 --port 8000 --reload \
SPRINGBOOT_SERVER_PORT
와 springboot-servie/src/main/resources/application.properties
파일의 server.port
를 일치시켜 주세요
server.port=xxxx
본 프로젝트는 Docker Compose를 사용하므로 이를 실행시켜주세요.
(sudo) docker compose up
/project-root
│
├── data/
│ ├── elasticsearch-data/ (optional for persistent MongoDB storage)
│ ├── mongodb-data/ (optional for persistent MongoDB storage)
│ └── mariadb-data/ (optional for persistent MariaDB storage)
│
├── fastapi-service/
│ ├── dockerfile
│ ├── entrypoint.sh
│ ├── requirements.txt
│ ├── venv/
│ ├── app/
│ │ ├── main.py
│ │ ├── models/
│ │ │ ├── users_schemas/
│ │ │ │ ├── request.py
│ │ │ │ └── response.py
│ │ │ └── users.py
│ │ ├── routers/
│ │ │ └── users_routers.py
│ │ └── crud/
│ │ └── users_crud.py
│ └── config/
│ ├── config.ini
│ └── database.py
│
├── springboot-service/
│ ├── Dockerfile
│ ├── build.gradle
│ ├── settings.gradle
│ ├── gradlew
│ ├── gradle/
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── auth/
│ │ │ ├── controller/
│ │ │ │ └── AuthController.java
│ │ │ ├── model/
│ │ │ │ └── User.java
│ │ │ ├── repository/
│ │ │ │ └── UserRepository.java
│ │ │ ├── service/
│ │ │ │ └── AuthService.java
│ │ │ └── SpringbootServiceApplication.java
│ │ └── resources/
│ │ ├── application.properties
│ │ └── application.yml
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── auth/
│ └── AuthServiceTests.java
│
├── .gitignore
├── docker-compose.yml
├── .env
├── .env.template
└── README.md