소프트웨어 전문지 마이크로소프트웨어 394호는 클라우드(Cloud)와 백엔드(Back-End)를 주제로 담았습니다. 클라우드, 데브옵스, PaaS, 마이크로서비스 아키텍처 등 마소 394호의 주요 기사들을 IT조선 독자에게도 소개합니다. [편집자주]

국내에서는 안정적으로 서비스되던 게임이 클라우드 환경을 통해 중국에 배포되고 나서 장애가 발생했다. 이 업체는 한국 서비스를 실제 물리 서버에서 하고 있었다. 중국에 진출하면서 클라우드를 처음 도입했다. 그런데 두 개의 리전에 로그인 서비스를 배포했는데, 특정 시간대에 한쪽 리전에서만 계속 로그인이 제대로 되지 않아 튕기는 문제가 발생했다.

게임사 개발팀은 한국에서 몇 년에 걸쳐 검증된 로직이 중국에서 장애가 나자 원인을 찾기 힘들어했다. 문의가 들어와 확인해보니 클라우드 인프라 문제였다. 클라우드에서 장애로 가장 많이 이어지는 IOPS(초당 발생하는 IO) 이슈였다.

왜 이러한 현상이 발생했을까? 앞서 언급한 것처럼 클라우드는 공유 자원이다. 즉 한 호스트 머신에 우리 서비스 외 타 서비스도 입점할 수 있다는 뜻이다. 이 서비스가 특정 시간마다 과도한 자원을 사용한다면(IO가 많이 필요한 배치 작업을 돌린다면), 우리 서비스에 영향을 줄 수 있다. 이 게임업체는 기존 클라우드 서비스를 쾌적한 다른 존으로 배치를 변경한 후 장애를 해결했다.

모니터링 때 사용되는 오픈소스 주자들. / 마이크로소프트웨어 394호 발췌
모니터링 때 사용되는 오픈소스 주자들. / 마이크로소프트웨어 394호 발췌
DBA나 개발자가 처음 클라우드를 접할 때, 가장 흔하게 간과하는 것이 클라우드와 물리 서버의 스펙 산정이다. 클라우드는 동일 스펙의 물리 서버보다 40~50% 수준의 성능을 감안해 보수적으로 접근해야 한다.

인스턴스별로 IO를 잘 분산해 비용 절감적인 아키텍처를 유지하는 것이 중요하다. (DB를 클라우드로 전환할 경우, DBMS 쿼리의 문제가 아닌 IOPS 제한에 걸려 느린 큐(Slow Query)가 종종 발생한다.) 즉, IO를 잘 관리하는 게 핵심이다. AWS의 프로비전드 IOPS(Provisioned IOPS), 애저의 프리미엄 저장소(Premium Storage) 같은 IO를 보장받는 제품도 있지만, 비용이 만만하지 않다. 물론 IO에 특화된 인스턴스나 전용 SSD를 제공하기도 하므로 서비스 특성에 적합한 인스턴스를 선택해야 한다.

메모리 비용도 1G당 월 1만원 정도라서 로그·시계열 데이터 같은 경우, 메모리를 많이 사용하는 RDBMS보다는, 시계열(Time Series) DB를 사용해 비용을 아끼는 방법도 있다.

손영수 필자의 ‘클라우드의 성능 품질 이야기’에 대한 자세한 내용은 ‘마이크로소프트웨어 394호(https://www.imaso.co.kr/archives/3939)’에서 확인할 수 있다.


관련기사