사이드 프로젝트(모아모아) 배포 설명

김민우·2022년 8월 25일
0

Moamoa

목록 보기
1/1

🐳 (백엔드) 사용자 요청 흐름도

  • Amazon EC2(프리티어)를 사용하여 서버를 배포 하였습니다. EC2 내에 스프링 빌드 파일(jar)을 실행하도록 구성했습니다.

  • Database로는 RDBMS인 MySQL을 사용하였고, Amazon RDS로 구축했습니다. 정적파일(이미지)은 S3에 저장하여 불러오도록 하였습니다.


🐳 백엔드

  • Nginx을 이용하여 서버가 무중단 배포가 되도록 하였습니다. Certbot(Let's Encrypt)을 통해 SSL(Https) 설정을 해주었습니다.

  • Nginx 내에서 리버스 프록시를 통해 클라이언트가 80 port로 들어오면 443 port로 리다이렉트 하였고, 443 port로 들어오는 요청이 경로가 /인 경우 프론트엔드, /api인 경우 백엔드로 들어오도록 하였습니다.

  • Ec2 내에서 Redis를 사용하여 백엔드 내부 파일(Refresh_Token)을 저장하도록 하였습니다. CRUD의 경우 RDBMS인 MySQL을, redis는 read-only 경우로 설정하였습니다.


🐳 [프로젝트 CI/CD]

  • Github Action와 CodeDeploy, AWS S3를 통해 배포 자동화(CI/CD)가 가능하도록 하였습니다. Route53을 통해 (moamoadev.shop) 도메인을 구매하여 사용하였습니다. 또한 Let's Encrypt를 통해 SSL 인증서를 발급 했습니다.

  • Backend의 경우 develop 브랜치로 push 할 경우, Github Actions가 감지하여 빌드(jar)하고, 빌드한 파일을 압축하여 S3로 옮기고 CodeDeploy를 통해 EC2로 전달 하였습니다.

  • Frontend의 경우 develop 브랜치로 push 할 경우, Github Actions가 감지하여, 정적 파일을 압축하여, S3로 옮기고, CodeDeploy를 통해 EC2로 전달하였습니다.

  • 프론트엔드 쪽에는 moamoadev.shop/api를 요청하고, 클라이언트는 moamoadev.shop에 접속하여 서비스를 요청합니다.


🐳 [앞으로의 방향성]

  • 현재 CI/CD를 위한 과정이 복잡합니다. (CI/CD를 위해 S3로 파일을 옮기고, S3에서 CodeDeploy -> EC2)

  • 그래서 S3로 빌드파일 및 정적파일을 압축해서 옮기는 대신, 도커를 이용하여 빌드 파일과 정적파일을 이미지화 시켜서 바로 EC2에서 도커 이미지를 통해 컨테이너를 실행할 예정입니다.

  • 또한 nginx와 redis 와 같이 의존성이 필요한 파일을 EC2내에서 설치해서 배포하는 것보단, 도커 이미지에서 nginx, redis를 불러와 서버 내에서 컨테이너화 시킬 예정입니다.

profile
Backend Developer

0개의 댓글