Skip to content

My-Music-Note/back

Repository files navigation

🎶 My-Music-Note

My-Music-Note는 일기와 음악을 통한 나만의 AI친구 서비스입니다.

개발 환경

  • 개발도구: 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

사용 기술

Java Gradle JWT
Spring Boot React
PostgreSQL JPA Hibernate
GitHub Actions AWS S3 AWS CodeDeploy AWS Docker
Git GitHub IntelliJ IDEA DataGrip SonarCloud

AWS Infra

My-Music-Note

문제 정의 및 해결 과정

프로젝트 초기에는 아래와 같은 기술적 과제와 한계가 있었습니다.
이를 해결하기 위해 다양한 기술 스택과 AWS 서비스를 활용하여 다음과 같은 방안을 도입했습니다.

0. 서비스 안정성과 확장성 확보

  • 문제점: 단일 서버 구성으로 장애 발생 시 서비스가 중단될 위험이 있었으며, 트래픽 증가 시 확장성이 부족했습니다.
  • 해결방안:
    • Auto Scaling Group과 Application Load Balancer를 결합하여 고가용성 아키텍처를 구축했습니다.
    • Blue/Green 배포 방식을 적용하여 무중단 배포를 실현했습니다.
    • JMeter를 이용해 가상 사용자 4000명 테스트를 진행했으며, Auto Scaling Group이 트래픽 부하에 따라 3분 내에 새로운 인스턴스를 자동 생성하여 부하를 분산했습니다.

1. 효율적인 CI/CD 파이프라인 구축

  • 문제점: 수동 배포로 인해 시간 소요 및 인적 오류 가능성이 높았으며, 배포 중 다운타임이 발생했습니다.
  • 해결방안:
    • Gradlenpm의 캐싱을 통해 빌드 시간을 약 40% 단축했습니다.
    • Docker 기반 배포로 일관된 배포 환경을 구현했습니다.
    • GitHub ActionsAWS CodeDeploy를 결합해 CI/CD 파이프라인을 자동화했으며, Blue/Green 배포 방식으로 서비스의 가용성을 유지했습니다.

2. 보안 및 네트워크 설정 강화

  • 문제점:
    • Public/Private Subnet 간의 역할 구분 및 접근 제한이 불명확했습니다.
    • Backend 계층으로 외부 트래픽이 직접 도달할 수 있는 보안 취약점이 있었습니다.
  • 해결방안:
    • Session Manager를 도입하여 SSH 없이 안전하게 EC2에 접근하며, 추가 Bastion Host 비용을 절감했습니다.
    • Frontend와 Backend 계층에 ALB와 ASG 연동 보안 그룹을 설정하여 보안 수준을 강화했습니다.
    • HTTPS 통신 암호화를 위해 SSL 인증서를 Application Load Balancer에 적용했습니다.

3. DNS 및 서브도메인 관리

  • 문제점: 브랜드 도메인과 서브도메인 미설정으로 서비스 인지도와 사용자 경험이 저하되었습니다.
  • 해결방안:
    • Route53을 활용하여 musicdiaryclub.com 도메인과 api.musicdiaryclub.com, www.musicdiaryclub.com 서브도메인을 설정했습니다.

4. 코드 품질 관리 비용 절감

  • 문제점: 코드 품질 검사를 수동으로 진행해 시간과 비용이 과다하게 소모되었습니다.
  • 해결방안:
    • SonarCloud를 도입하여 GitHub Actions와 연동, Pull Request 단계에서 코드 스멜과 보안 취약점을 실시간 분석했습니다.

CI/CD

CI:CD

  1. 인프라 관리비용 최소화를 위해 Jenkins 대신 Github Ations 사용
  2. S3CodeDeploy가 실행시킬 Script를 저장
  3. CodeDeploy를 사용하는 목적은 Blue/Green 배포 + ASG로 생성된 EC2배포 자동화의 목적
  4. Docker를 사용함으로서 동일한 환경을 제공

SonarCloud

SonarCloud

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published