우테코가 끝나고 우테코 기간 동안 만들었던 서비스가 우형 AWS에서 내려가게 되었다. 공들여 만든 땡쿠 서비스가 내려가는 게 아쉬워서 AWS free tier에서 최대한 비슷한 환경을 만들어 보고자 이전을 하기로 했다.
기존 아키텍처
우형 AWS에서는 오직 EC2만 사용할 수 있다는 제약사항이 존재해서 EC2를 십분 활용해 다음과 같은 백엔드 아키텍처를 구성했다.
프론트 아키텍처는 다음과 같다.
위 아키텍처에서 각 EC2 인스턴스는 arm 아키텍처 t4.micro이므로 저 아키텍처를 그대로 옮긴다면 인스턴스 한 대당 1만 원이 조금 넘는 비용이 청구된다. 따라서 한 달에 약 10만 원의 유지비가 필요하다. 이 유지비를 줄이면서 기존 구성을 최대한 살리기 위해 다음과 같은 아키텍처를 구성했다.
AWS 이전 이후의 아키텍처
프론트와 어드민은 정적 배포가 가능하므로 S3를 사용했다. EC2하나에 Nginx와 WAS를 넣어놓고, 젠킨스를 사용하는 대신 BeanStalk과 github action을 사용해 무중단 배포를 구현하기 위해 ELB를 앞에 두었다. 이렇게 무중단 배포를 하게 되면 잠시 동안은 두 대의 인스턴스가 작동되므로 약간의 과금이 발생한다. 하지만 프리티어로 제공되는 t2.micro는 한 달 내내 유로로 띄워 놓아도 1만 원가량이 소비되는 것을 감안하면, 많아야 몇백 원 정도의 요금이 발생할 것이라 예상된다. CloudFront는 HTTPS와 커스텀 도메인을 적용하기 위해 사용했다.
자세한 사항은 다른 포스팅에서 다루겠다.
Production 부분 이전 완료
현재까지 Production 부분을 이전 완료했다. 이전 완료한 부분의 아키텍처는 다음과 같다.
나는 위 아키텍처를 EC2 - RDS - ELB - S3 - Cloud Front 순서로 이전했다. EC2, RDS 세팅 과정은 굳이 다루지 않겠다(세팅 방법을 소개하는 글이 많다).
ELB, Auto Scaling Group을 세팅하는 포스팅은 이 링크를 참고하자.
S3, Cloud Front를 세팅하는 포스팅은 이 링크를 참고하자.
일단 바쁜게 다 마무리되면 배포와 관련된 부분도 완성해 추가 포스팅하겠다.