19P by xguru 2022-04-11 | favorite | 댓글 5개

AWS,Azure,Google 등의 클라우드 간에 옮겨본 이유와 경험을 묻는 HN의 질문과 답변들

  • 내 클라이언트의 환경을 AWS → Google, 그리고 Google → Hetzner로 제로 다운타임 이관 했음
    • 주요 이유는 가격. AWS/Google의 무료 크레딧을 다 쓴후에 Hetzner로
    • 크레딧을 사용하여 절약한 비용이 마이그레이션 비용의 20배
    • 마이그레이션 진행은 각 환경에서 리버스 프록시를 이용해서 백엔드와 연결 후, 서비스간 VPN을 설정한 뒤에 DNS를 변경
    • 가장 까다로운 부분은 데이터베이스 Failover 였고, 마스터 전환 후에 업데이트가 재시도 되도록 하는 것
    • 이를 통해서 클라이언트는 클라우드 제공자에 구애 받지 않는 설정을 가지게 되었고, 자신들이 가진 무료 크레딧을 잘 활용했음
    • 기술 상세
      • haproxy, nginx 등의 리버스 프록시 + Hashicorp Consul + ngx_mruby
      • 각 클라우드간 VPN 구성하여 리버스 프록시가 양쪽의 백엔드에 접속 가능
      • 새 클라우드로 데이터베이스 복제
      • 앱이 어떤 데이터베이스를 마스터로 사용할 건지 선택하는게 가능하도록 할 것(Consul)
      • 앱이 데이터베이스 오류에 대해 gracefully 처리하도록 할 것. 이 부분이 가장 까다로움
      • DNS TTL 작게 설정
      • 새로운 백엔드를 리버스 프록시에 연결하고 에러가 없는지 확인
      • 새 리버스 프록시를 환경에 추가하도록 DNS 업데이트
      • 새 클라우드에 있는 복제본을 마스터로 Promote
      • 기존 백엔드에 있는 커넥션들 줄이기
      • 최종적으로 기존 리버스 프록시를 DNS에서 제거
      • 모두 확인후 기존 환경을 제거하고 DNS TTL을 복구
  • GitLab 은 AWS에서 Azure로 갔다가 다시 Google Cloud로 갔음(몇년 전에)
    • 처음엔 다들 그러듯이 AWS로 시작했지만, 돈이 엄청 들어감 (돈을 불태운다고 표현)
    • YC 멤버에게 Azure 크레딧을 준다고 해서 계산해보니 1년정도의 사용금액인듯 해서 옮겼음
    • 하지만 옮기는 것은 고통스러웠고, Azure 사용 기간중엔 아무도 만족하지 못했음. 추가로 무료 크레딧도 꽤 빨리 소모되었음.
    • GCP로 이동한 이유는 정확히 기억 안나지만, 꽤 오랜 시간이 걸리는 상당히 어려운 과정 이었음
    • GCP 경험은 훨씬 더 좋았지만, 완벽하다고 말할 수는 없음.
    • 특히 GCP는 명확한 이유 없이 VM을 무작위로 종료하는 경향이 있었음
    • 때로는 깔끔하게 종료되지만, 다른 경우엔 일종의 중간상태로 끝나버려서 다른 시스템이 연결을 시도하게 되어 바로 오류가 발생하는 대신 연결 시간초과가 발생
    • 기억하기론 시간이 지나면서 좋아지긴 했지만 "뭔가 고장 났지만, 이유를 알려줄수 없습니다." 라고 말하는 매우 Google 스럽게 느껴졌음
    • 돌이켜 보면, 다시 회사를 차린다면 아마도 Hetzner나 다른 저렴한 베어메탈 프로바이더 같은 회사를 고수할 것
    • 클라우드 서비스는 가능한 최대로 활용한다면 훌륭하지만, 90%의 경우에는 이점없이 그냥 쓰고 있고 비용만 많이 내고 있을 것
  • Google Cloud → Digital Ocean → OVH
    • 고성능 서버에서 우리것을 운영하는 것은 생각보다 문제가 적고 쉬움
    • git push로 배포하고, 컨테이너를 빌드하는 것은 "Set it and forget it" 수준
    • 테라바이트 용량의 PostgreSQL 데이터를 가지고 있어서, 대부분의 클라우드에서 엄청나게 비쌈
    • 클라우드가 먹게 좋게 썰린 빵 같다고 생각하는 사람도 있는 것 같지만, 개발자의 시간을 실제로 줄여주지는 못함
    • 클라우드는 서버운영보다 비싸고 많이 느리다. 중간 규모의 워크로드에서는 클라우드를 이용하는 것의 장점이 없다

가장 투표를 많이 받은 3개 답변만 추렸습니다. 위 답변에는 또 다양한 질문,의견 및 반론 댓글이 달려있으니 같이 참고하세요.

이 스레드를 콕 집어 아직도 클라우드 이해 부족이 만연한다며 비판하는 내용의 기사가 ITWorld에 올라왔군요.
'크레딧에 홀려' 클라우드 마이그레이션…"최대의 착각"

ITWorld 의 기사를 쓴 Matt Asay는 얼마전까지도 AWS의 개발자 마케팅 헤드였다는 사실을 참고하고 읽어야 합니다.
https://www.linkedin.com/in/mjasay/details/experience/

오호, 좋은 정보 감사합니다.

클라우드가 만능은 아니죠. 3번째 답변 마지막 문장은 좀 의문이네요 활용하기 나름 아닐지..

클라우드간 이관을 묻는 질문이었는데 많은 사람들이 클라우드 보다는 Hetzner 같은 호스팅 서비스를 추천하고 있네요.
아무래도 비용이 가장 큰 이유긴 하겠지만, 그래도 클라우드를 잘 쓰는 것은 나름 이점이 많다고는 생각합니다.
작은 회사가 클라우드 안쓰고 호스팅 써요! 라고 얘기하면 개발자 뽑기도 어려운게 사실 이구요. (직접 개발하신다면 뭐 문제없겠지만요)

중간에 Google Cloud는 명확한 이유없이 VM을 무작위로 종료하는 경향이 있었다는 것에 완전 동의합니다.
제가 몇년전에 작은 서버를 구글에서 운영하다가 AWS LightSail로 옮긴게 그런 이유였어요.
어느날 이유없이 서버가 틱 죽거나 접속이 안되는 상황이 종종 발생하더군요. 지금은 나아졌을지도 모르겠습니다만.. 좋은 경험은 아니었어요.