My-Music-Note는 일기와 음악을 통한 나만의 AI친구 서비스입니다.
- URL(만료): www.musicdiaryclub.com
- api-server-repo
- 개발도구: Intellij IDEA - Ultimate
- 언어: Java 17 LTS
- 빌드도구: Gradle
- 개발
- Spring Boot: 3.3.4
- Spring Data JPA
- 테스트
- Junit5
- AssertJ
- Mockito
- SonarCloud
- AWS Infra
- VPC
- EC2
- ALB
- ASG
- NAT Gateway
- CI/CD
- AWS S3
- AWS CodeDeploy
- GitHub Actions
- Docker
- 데이터베이스
- AWS RDS PostgreSQL 16.3
- ERD
- ERDCloud
- ETC
- Post Man
- 인프라 관리비용 최소화를 위해
Jenkins
대신Github Ations
사용 S3
는CodeDeploy
가 실행시킬 Script를 저장CodeDeploy
를 사용하는 목적은Blue/Green
배포 +ASG
로 생성된EC2
배포 자동화의 목적Docker
를 사용함으로서 동일한 환경을 제공
- 백엔드 개발
- 유저, 일기, GPT 관련 RESTful API 구현
- 고가용성 아키텍처 설계
- Auto Scaling Group과 Load Balancer를 활용한 고가용성 아키텍처 구축
- AWS CodeDeploy를 통한 Blue/Green 배포로 무중단 서비스 제공
- Artillery를 활용한 성능 테스트
- 단일 EC2
- 타임아웃 오류: 전체 요청의 37.6%(14,766건)
- 작업 실패율: 가상 사용자의 54.7%(14,766명)
- My-Music-Note
- 타임아웃 오류: 0%
- 작업 실패율: 0%
- 99% 요청에 대해 레이턴시 25.8ms
- 단일 EC2
- GitHub Actions 기반 CI/CD 파이프라인 구축
- Gradle 및 Npm 캐싱 적용으로 CI/CD 빌드 시간 30% 이상 단축
- Amazon Machine Image 활용으로 배포 속도 개선 및 비용 절감
- 보안 및 네트워크 강화
- Systems Manager 도입으로 SSH 없이 EC2 접근, Bastion Host 비용 제거 및 외부 노출 차단
- 보안 그룹 및 ALB-ASG 연동으로 Frontend와 Backend 계층 보안 강화
- 코드 품질 관리
- SonarCloud ,JaCoCo 연동으로 PR 단계에서 코드 품질 개선
- 백엔드 서버 Test Coverage 68.7%
프로젝트 고민 및 트러블 슈팅