TDD기반 서버 구축, CI+CD / AutoScaling, 통합 모니터링, 장애대응
반려동물 소유자들이 편리하게 병원 예약을 할 수 있는 웹 애플리케이션입니다.
이 시스템을 통해 사용자들은 온라인으로 병원 예약을 신속하게 처리할 수 있고, 예약 확인, 변경 및 취소 등의 기능을 손쉽게 이용할 수 있습니다.
🧑🤝🧑 팀원 및 제공 기능 (팀 노션)
- TypeScript
- Nest.js
- MySQL
- TypeORM
- Jest
- Seeder
- Winston
- JWT
- GitHub Action
- Docker
- AWS ECR (Elastic Container Registry)
- AWS ECS (Elastic Container Service)
- AWS Fargate
- RDS MySQL (Relational Database Service)
- Load Balancer
- CloudWatch (Logs, Alarm)
- SNS (Simple Notification Service)
- Lambda
- Slack
- JMeter
npm run start:local
npm run start:dev
-
main: 배포용 서비스 코드가 있는 메인 브랜치로, 항상 현재 서비스 상태를 반영해야 합니다.
-
develop: 다음 릴리스를 위해 최신 개발이 진행되는 개발 브랜치입니다.
-
feature 브랜치: 새로운 기능 개발에 사용되는 브랜치입니다. develop 브랜치에서 생성되며, 기능 개발이 완료되면 develop 브랜치에 병합됩니다.
-
hotfix 브랜치: 빠르게 코드를 수정하는 데 사용되는 브랜치입니다. develop 브랜치에서 생성되며, 수정이 완료되면 main develop 브랜치에 병합됩니다.
이러한 브랜치 전략을 통해 저희는 개발 과정을 체계적으로 관리하고, 기능별로 병렬적인 작업을 진행할 수 있습니다. 코드 변경은 각자의 기능 브랜치에서 이루어지며, 최종적인 안정 버전은 main 브랜치에 반영됩니다.
src
├─ __tests__ //유닛테스트 디렉토리
│ └─ moduleA
│ ├─ service.test.ts //모듈A의 서비스 테스트코드
│ └─ repository.test.ts //모듈A의 레포지토리 테스트코드
├─ module
│ ├─ moduleA
│ │ ├─ api
│ │ │ ├─ controller.ts
│ │ │ └─ dto.ts
│ │ ├─ data
│ │ │ ├─ db.ts //실제 레포지토리
│ │ │ └─ entity.ts
│ │ ├─ domain
│ │ │ ├─ model.ts
│ │ │ ├─ repository.ts //인터페이스로 구현된 레포지토리
│ │ │ └─ service.ts
│ │ ├─ error.ts
│ │ ├─ mapper.ts
│ │ └─ module.ts
│ ├─ http-exception.filter.ts
│ ├─ logger.ts
│ ├─ response.ts
│ ├─ seeder.ts
│ ├─ app.module.ts
│ ├─ app.controller.ts
│ ├─ app.service.ts
│ └─ main.ts
├─ package.json
├─ tsconfig.json
├─ .gitignore
└─ .env
![image](https://private-user-images.githubusercontent.com/101460733/258651978-a614e3fe-1f55-44e8-a9d0-a5c1d0e88108.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkyNTQ4MDAsIm5iZiI6MTcxOTI1NDUwMCwicGF0aCI6Ii8xMDE0NjA3MzMvMjU4NjUxOTc4LWE2MTRlM2ZlLTFmNTUtNDRlOC1hOWQwLWE1YzFkMGU4ODEwOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyNFQxODQxNDBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNTI5ZDUwZTI4MDJmM2NkZGVlZGM2NjdjZTcxOGQ3Nzc0Njk4NWUyOWVlZWYzNzQxMGZiZmIwYTQyZDIzMDY0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.5CfX66ROD0TEQ-QeXyNO6Jtp6rVW5ossmeeMrhjV0RA)