
(썸네일은 canva에서 만들어준 이미지 🤭)
아워 저니 토이 프로젝트를 진행하면서 가장 값진 경험은 뭐니뭐니해도 배포일 것이다. 이 글에서는 배포 시행착오와 끝내 성공한 과정을 적어보고자 한다.(a.k.a 삽질기)
아무래도 저연차 주니어+학부생들로 이루어진 팀이다 보니 서버 비용이 많이 나오는 것이 부담일 수 있어 AWS 프리티어를 사용하기로 했었다.
그래서 이전에 배포했을 때처럼 EC2 인스턴스와 Docker 컨테이너 조합으로 배포를 했었다.
django 로직에 문제는 없었으나,
Docker 때문에 자꾸 cpu 사용률이 100을 찍어버리고..
ssh 연결이 끊겼다.
인스턴스 재부팅도 해봤지만 해결책이 아니라고 생각이 들어 배포 방법을 바꿨다.
EC2 인스턴스를 scale up하면 비용 이슈가 발생하므로
서버리스인 Lambda를 선택했다.
Django + Lambda 조합으로 배포하려면 Zappa를 사용하는 것 같아 몇 시간 노트북 붙들고 작업한 끝에 배포 성공!
(아직 swagger 문서 접속할 수 있다.)
생각보다 참고할 블로그가 많지는 않았으나 Lambda로 이미지 업로드할 때 썸네일 만드는 함수 작업만 해본 나에겐 값진 경험이었다.
회원가입 후 이메일 인증 기능이 있는데, lambda vpc 때문에 gmail smtp 메일 전송이 안 되는 문제가 발생하였다.
찾아 보니, nat gateway 를 사용하는 방법이 있는 듯 하였으나 요금이 발생한다는 게 걸렸다.
또 Lambda로 옮긴 목적이 비용 절감이었던 것도 있어서
대안을 찾아 나섰다(?)
비용, smtp 서비스, 리소스 관리 등의 관점에서
Lightsail이 우리 프로젝트의 요구사항을 가장 잘 충족하는 것이라고 판단하였고 정착하게 되었다!
특히, 고정 ip가 무료이고, lightsail load balancer에서 ssl 인증서를 발급할 수 있다는 것이 큰 장점으로 다가왔다.
Lightsail은 처음이었고 EC2나 RDS 등의 AWS 서비스와는 다른 별도의 도메인에서 운영되어 약간의 걱정..ㅎㅎ을 했지만
UI가 직관적이고 세팅하기도, 모니터링하기도 되게 편했고 인스턴스 접속해서 하는 건 EC2랑 별반 다를 게 없었다.

특히, EC2는 보안 그룹 설정을 따로 해야되는데, 이건 인스턴스 설정할 때 가능하다는 게 나이스했다.
다양한 배포 방식의 장단점을 파악하고, 제한된 조건에서의 대안을 탐색하며
문제 생김 => 해결 => 문제 생김 => 해결
이런 사이클을 돌다 보니, 코드를 짜면서 디버깅한 게 아닐지라도
나 이렇게 삽질해봤으니 다른 것도 다 해결할 수 있어! 하는 마인드를 가질 수 있을 것 같다

그동안 두려워했던 배포였는데 이 두려움 하나 깨부시자는 마음으로 인프라 맡겠다고 자처하며 고군분투한 보람이 있었다! 앞으로도 열심히 삽질하고 내 것으로 만들겠노라.
인프라 전문가..가 되는 그 날까지 👊