
- Developer
- 로컬 개발 환경에서 코드 작성 및 GitHub에 push
- GitHub
- GitHub에 레포지토리에 존재하는 workflows파일에 의거하여 action 작동
- GitHub Actions는 CI/CD 파이프라인을 관리
- 우리 조에서는 PR이 닫히고, develop 브랜치에 머지가 된 것이 확인되면 action 작동함
- GitHub Actions
- GitHub Actions에서 빌드된 Spring Boot 프로젝트 이미지를 Docker Hub에 업로드함
- Docker Hub에 업로드된 Spring Boot 프로젝트 이미지를 EC2에서 내려받고 실행됨
- AWS EC2
- EC2 인스턴스로 애플리케이션을 배포함
- 애플리케이션들은 EC2위에 도커를 설치하여 여러 컨테이너로 관리
- Docker
- Spring
- Nginx
- 백엔드 애플리케이션인 Spring에 들어오는 클라이언트의 요청을 Nginx에서 받고, 해당 요청을 다시 Spring에 전달함.
- ↑ 리버스 프록시 역할
- SSL 인증서 발급 및 https 설정 → 웹 서버와 클라이언트 간의 통신을 암호화
- Mysql
- Redis
- 메모리 데이터 저장소 (우리 프로젝트에서는 리프레시 토큰 및 최근 검색어 저장 용도로 사용)
- Prometheus
- Spring 프로젝트의 매트릭 데이터를 수집하고 저장 → 서버 상태, 애플리케이션 성능 등 모니터링 가능
- Grafana
- Prometheus에서 수집한 매트릭 데이터를 시각화하여 대시보드 형태로 볼 수 있는 GUI 툴