이 글은 Azure에서 AWS Lightsail(이하, Lightsail)로 이전하면서 생긴 일에 관하여 간단하게 적어보고자 합니다.
이전까지 토이 프로젝트와 DB 등을 Azure 학생 무료 프로모션을 이용하여, Web App, VM, MySQL DB 등으로 분리하여 사용했었습니다. 이제 프로모션이 끝나 과금될 위기였습니다. 계산을 해보니 Web App은 F1으로 각 지역마다 하나를 무료로 사용할 수 있지만, VM과 DB는 별도 과금이 되는 구조입니다. 요금을 계산해보니 토이 프로젝트 치고는 많이 비싼 느낌이라서 다른 클라우드도 사용할 겸하여 이전을 결심하게 됩니다.
후보는 GCP, AWS, Vultr 이렇게 3가지였는데, GCP는 이전에 사용한적이 있었기 때문에 패스. Vultr는 서울 리전이 있지만, 결제가 외화로 된다고 들었습니다. 그래서 AWS로 결정을 했는데, AWS 이거... 만만치 않습니다. 정확히 과금 체계를 알지 않으면 요금 폭탄을 맞기 십상일 것 같았습니다. 그래서, 일부 종량제인 Lightsail로 시작해보기로 결정했습니다.
이전을 진행하면서, 리소스를 배분하는 방법도 좀 다르게 하고자 했습니다. Azure는 무료여서 Web App, VM, DB 등 용도 별로 각각 다른 리소스를 사용하였습니다. 무료 프로모션을 최대한 활용했습니다. 하지만, 이제는 돈을 내야하는 입장이니 어떻게 하는 것이 싼지 비교가 필요했습니다. 지피지기면 백전백승이라 하였으니 현재의 구조를 그려보고, Lightsail로 이전하면 어떻게 되는지도 그려보았습니다.7
그림으로 그리면 이런 느낌?
위 구조를 그대로 Lightsail로 각각의 리소스를 따로 생성하면 아래와 같은 구조가 만들어지고, 종량제를 초과하지 않는다는 상정하에 산출된 요금은 아래와 같습니다.
각각을 VM으로 생성할 경우, 월 28.5 달러라는 요금이 발생합니다. 그래서 이걸 Dockerize 하여, 컨테이너로 구성하면 더 싸질까 싶어 좀 더 살펴봤습니다.
Discord Bot을 구성하는 컨테이너를 노드 하나로 합쳐도 어쨌든 RDBMS를 별도로 구성하는 그 자체가 비용을 많이 잡아먹는 구성이었습니다. 그리고 개인적으로 잘 사용하던 phpmyadmin도 별도로 띄울려면 요금이 들어가기 때문에 좀 더 고민해보기로 합니다.
위와 같은 요금 때문에 사실 Azure를 그대로 유지할까도 싶었습니다. (Web App은 F1이 무료니깐.) 하지만, 칼을 뽑으면 무라도 베라고 했나요. 한 번 결심한 것이니 좀 더 요금을 줄일 방법을 찾아봤습니다.
제가 찾은 최적의 결과는 하나의 VM에 올리는 것입니다.
그렇게 되면 생각해볼 문제는 아래와 같습니다.
위와 같은 내용을 아래와 같이 해결하기로 합니다.
위의 해결 내용과 연계하여 아래 내용을 추가 조치하기로 했습니다.
그렇게 최초로 그린 컨테이너 구조 (참고용)
위 구조는 각 서비스별로 Docker Compose Yaml 파일을 구성하고, 각 컨테이너별로 통신이 필요한 경우에만 각각 도커 네트워크로 연동합니다. 이렇게 하면, 필요한 컨테이너만 노출되기 때문에 관계 없는 컨테이너에 방해를 주지 않을 것으로 보입니다.
일단은 위 구성대로 VM 단독으로 사용하고, 업로드된 Object가 많아지면 AWS S3 또는 Lightsail Bucket을 생성하고, VPC로 연동하는 식으로 확장할 것 같습니다.
Lightsail의 요금 산정, 서비스 생성 과정에 대해서는 많은 분들이 소개해주시기 때문에 저는 매우 주관적인 후기를 남겨보겠습니다. 아마도, Azure와의 비교가 주되지 않을까 싶습니다.