[MongoDB] Atlas Cloud의 장단점, 특징

[원본 링크]

이전 포스트
https://blog.naver.com/sssang97/223190868228

https://cloud.mongodb.com/
MongoDB Atlas Cloud는 MongoDB를 만든 회사에서 직접 운영하는 클라우드 서비스다.
복잡한 관리 부담을 비싼 비용으로 줄이고 싶다면, 나쁘지 않은 선택지 중 하나가 될 수 있다.

Atlas Cloud를 통해 MongoDB를 몇년간 운영해보고 느낀 점들을 대강 기록한다.




기본 구조

클터스터 단위로 DB를 구성하고 사용할 수 있다. 이런 식으로 기본 UI가 뜬다.




비용 효율성

https://www.mongodb.com/pricing
이런 리셀러 서비스들이 으레 그렇듯이, 별로 싸진 않다.
다음과 같은 스펙 선택지들이 미리 정해진 채로 제공된다.

AWS로 직접 띄울 때와 비교해보자.

M30의 경우에는 시간당 0.59달러 정도를 요구한다.

그러면 저걸 EC2로 직접 구성하면 얼마 정도가 들까?
정확히 뭘 쓰는지 공개하진 않지만, 아마 제한사항을 봤을 때는 m5.large 정도를 쓰는 것 같다.
그리고 m5.large의 비용이 0.118 달러 정도니까, 3개 클러스터를 띄우면 0.354 달러 정도가 나온다.

이러면 사실 1.6배 정도 비싼거니까, 엄청 비싼 것 까지는 아니긴 하다.

디스크와 트래픽 비용에도 추가 비용을 약간씩 받는다.
디스크 비용을 10GB에 3달러 정도 추가로 부과하는데, EBS를 직접 쓸 경우에는 디스크가 3개니까 10GB당 2.7 달러 정도가 부과된다. 10% 정도 더 받는 셈이다.

네트워크 전송 비용은 추가 비용을 받지 않고, AWS/GCP 등에서 발생하는 것을 그대로 받는 것 같다.

이건 버지니아 기준의 비용 명세인데, 실제로 버지니아의 AWS EC2 인터넷 전송비용도 0.09달러 정도다.




모니터링 시각화

자체적인 모니터링 도구 스택을 제공한다.

막 엄청 뛰어나진 않지만 적당히 볼만은 하다.




쿼리 통계

slow 쿼리나 빈도가 높은 쿼리 등을 자동으로 쌓아주기 때문에, 이걸 보고 트러블슈팅을 좀 할 수 있다.

되게 상세하게 기록된다.




인덱스 튜닝 보조

자체적인 인덱스 추천 기능을 제공한다.
실제로 느린 쿼리들을 수집하고, 그걸로 통계를 내서 실제로 걸면 좋을만한 인덱스 조합을 추천해준다.

이건 상당히 쓸만한 기능 중 하나였다.
기능이 정신없이 추가되는 기간 동안 매우 유용하게 썼다.




백업

당연히 DB 서비스인만큼, 자동화된 백업 기능을 제공한다.
자동으로 스냅샷을 뜨고, 스냅샷을 기반으로 복구를 시도할 수 있다.

당연히 추가 비용이 붙기 때문에 리텐션을 잘 잡아야 한다.




IP 제어

Public Access가 가능하도록 열 수도 있고, 특정 IP만 화이트리스트로 통과되도록 구성할 수도 있다.

그리고 임시 IP 추가 기능같은게 특히 유용했다. 걸어두고 좀 지나면 증발하는 그런거다.




AWS: Peering

피어링 등을 통해서 실제 AWS 클라우드와 네트워크 통신을 엮고, 내부통신을 타게 해서 비용과 성능을 최적화할 수 있다. 일부 리셀러들은 비싼 플랜을 구독해야만 이걸 열어주는 경우도 있는데, 이건 그냥 해주는 것 같다.

https://blog.naver.com/sssang97/223291033247




클러스터 장애 대응 문제

이건 좀 운영상의 난점이 될 수 있는 부분이다.
어느날 갑자기 처리량이 폭증해서 네트워크 IOPS 제한이 걸린 적이 있었다.

그러면 어떻게 될까? 일반적인 생각은, 그냥 쿼리 시간이 느려지거나 일시적으로 쿼리가 실패하는 정도일 것이다.

근데 아니다. 클러스터가 통째로 뻗어버린다. 스로틀링 걸려서 RAFT 상호 합의도 제대로 못하니까 계속해서 뻗고 살아나고를 반복하는데, 대시보드상에서는 이게 왜 이렇게 된건지 파악할 수 없고, 조치조차 할 수 없었다.

이럴때의 유일한 대처 방법은 스펙을 올려서 IOPS 제한에서 풀리게 하는 것이다.

클러스터에 대한 제어를 클라우드가 책임지지 않고 애매하게 떠넘기는데다가, 리소스에 대한 관리 책임을 AWS 등에 완전히 떠넘겨서 생기는 이런 애매한 가용성 문제들이 은근히 있다.




기술지원

DB와 별개로 추가 요금을 내면 기술지원을 해주는데, 돈 안내면 얄짤없다.
뭔가 장애가 생겨도 보고할 채널이 전혀 존재하지 않는다.

.png?type=w800)