프로젝트/42프로젝트

15분이면 충분하다 배포방법(AWS EC2, Vercel)

susong 2023. 3. 31. 16:40
728x90

15MinIsEnough 서비스 배포구조

배포 고려사항

1. (해커톤 상황 고려)내가 잘 아는 기술 스텍을 이용하자

  - EC2, Vercel 이용하기로 결정, Amazon RDS 이용은 고려하였으나 해커톤 기간 중에는 EC2 안에 마리아 DB사용하기로 결정

2. CORS, HTTPS문제는 최대한 간편하게 해결하자

  - Nginx를 리버스 프록시로 이용, 해당 문제 편안하게 해결

  - CertBot 및 nginx.conf 수정을 통해서 해당 문제 해결

3. 백 서버가 정상작동하지 않아도, 프론트서버에서 백 서버가 정상작동하지 않고있음을 알려줄 수 있도록 하자

  - Front, Back 이원화(Vercel, Nginx-Tomcat)

4. 서버는 대한민국에 존재해야하며, 네트워크 응답시간은 최소화시켜야된다. 

개발 고려사항

1. DB정규화는 최소화(빠른 개발 필요, 향후 데이터 정규화 재실시)

2. 모든 프로세스는 데몬화, 언제나 정상작동함을 보장해야함

3. 데이터 업데이트는 걸리는 시간 고려하여 최적화

  - 현재 업데이트 로직은 42API의 물리적 위치(파리) 및 엔드포인트 제한(초당 2회)로 인하여 전체 로직 30분 소요

  - 업데이트 로직은 새벽 4시 CronJOB으로 실시

4. 평가 데이터양(15만 이상)을 적절하게 다룰 수 있을 것

  - Query 당 걸리는 시간 최소화

CI/CD 구조

CI/CD 고려사항

1. 개발간 프론트 로컬 테스트 허용할 것

  - Nginx Conf에서 map으로 CORS 헤더 추가(localhost)

2. Github Action 이용, Backend 자동 적용

  - Gradle 이용하여 빠르게 개발환경 구축 및 빌드

3. Vercel - Github Integration 이용하여 push시 자동으로 프론트 적용

4. 개발 과정은 Organization project에 공유(ToDo, In Progress, End) 

5. Secret 키는 Vercel Secret 및 Github Action Secret으로 관리할 것

 

 

배포 결과물 : 링크

728x90