첫 선택은 GCP의 compute engine
Invest Helper의 "데이터베이스인 mysql"과 "api 구축을 위한 python flask앱"을 google cloud platform (이하 GCP)의 compute engine으로 운영하고 있었다.
작은 compute engine에 mysql + flask를 동시에 올려서 운용하면, 비용적으로 큰 부담이 없을 거라는 판단에서였다.
GCP를 선택한 이유도 작은 앱을 운용하는데 마이크로소프트의 Azure나 아마존의 AWS보다 성능 대비 비용이 저렴했다고 판단했기 때문이다 (GCP의 UI/UX가 직관적이고 documentation이 잘되있는 것도 한몫했다)
도커와 쿠버네티스에 눈을 뜨다
최근에 유행하는 마이크로서비스 패턴이 향후 서비스가 커졌을 때 관리성, 확장성 측면에서 훨씬 유리하므로,
mysql과 flask를 한 compute engine에 놓아 서로 종속시키는 것보다는 두 개의 서비스로 독립해서 운영하는 것이 좋을 것이라는 생각을 했었다.
당시에는 이리저리 알아본 결과, 아직 앱이 작아 관리의 어려움은 크지 않은데 비해 서비스를 2개로 늘리면 GCP 모듈을 2개 써야되서 비용이 늘어날 것으로 생각해 이 판단을 보류했었다.
최근 docker (도커)와 kubernetes (쿠버네티스)를 공부하면서 GCP의 cloud run이라는 서비스가 눈에 들어왔다. (역시 아는만큼 보이는 법이다. 정말 무섭다.)
GCP Cloud Run으로의 이사
GCP의 cloud run은 compute engine처럼 24시간 도는 것이 아니라 호출했을 때만 돌고 매월 기본 제공량이 있어 작은 서비스의 경우 사실상 무료로 운영할 수 있었다 (작은 서비스를 운영하는 개발자라면 cloud run 이외에도 cloud functions도 알아보는 것을 추천한다).
앱 배포 시에도 간단한 명령어 몇 줄이면 됐고, 컨테이너를 이용시 개발환경과 프로덕션 환경의 차이로 인한 미묘복잡한 문제들을 피해갈 수 있는 엄청난 장점 또한 가지고 있었다.
또한, 구글답게 documentation이 정말 깔끔하게 되있어서 쉽게 테스트 서비스를 구현해볼 수 있었다.
> Cloud Run 서비스 배포 튜토리얼
https://cloud.google.com/run/docs/quickstarts/build-and-deploy#python_1
> Cloud Run과 Cloud SQL을 연결하는 튜토리얼
https://cloud.google.com/sql/docs/mysql/tutorial-connect-run?hl=ko
구글이 크리에이터를 위한 플랫폼인 Youtube, 개발자를 위한 플랫폼인 Google Play, 광고네트워크플랫폼인 Adsense에 이어서 클라우드플랫폼인 GCP까지.. 정말 대단한 기업인 것 같다..
개발자 입장에서 GCP를 사용하면 할 수록 너무 쉽고 너무 파괴적이어서 google 주식을 좀 더 사야하나하는 고민을 하게 되었다...
결론
1. compute engine에서 cloud run + cloud sql로 서비스를 분리하면서 서버 관리 비용을 1/3 정도 절약
2. 컨테이너 기반인 cloud run을 사용하면서 앱 배포가 쉬워졌을 뿐만 아니라 안정성도 높아짐
3. 구글의 노예가 되기전 구글 주식을 사서 주주가 되어야 함
'프로그래밍 > invest helper' 카테고리의 다른 글
Container 내 python앱에서 Google Error Reporting 사용하기 (0) | 2020.12.30 |
---|---|
Portainer를 이용해 container 모니터링하기 (0) | 2020.12.29 |
GCE (Google Compute Engine)에 nginx로 무료로 https 적용하기 (0) | 2020.12.29 |
GCE (Google Compute Engine)에 mysql-server 설치하기 (0) | 2020.12.28 |
댓글