도모버스의 서버 스택 톺아보기

Tony Lee
DOMOVERSE 도모버스 블로그
5 min readApr 28, 2021

도모버스는 최적의 Cost-Performance Ratio (일명 가성비)를 찾기 위해 심혈을 기울이고 있습니다. CPR은 그저 인프라 운영비 뿐만 아니라, 공수를 줄이고 효율적인 개발 기간 관리를 위해 꼭 확인해야 하는 지표입니다. 이 글에서는 도모버스가 어떤 스택에서 서비스를 제공하고 있는지 간략히 소개하고자 합니다. 각 스택을 선택한 사유, 선택 과정에서의 고난과 역경은 별도 포스트로 차차 풀어보도록 하겠습니다. 🤔

서비스 아키텍처

도모버스 VPC 구성도

도모버스 인프라의 98%는 AWS 상에서 운영되고 있습니다. 업무 중 사용하고자 하는 대부분의 솔루션은 AWS 콘솔에서 이름을 검색하는 것만으로도 매우 쉽게 배포 후 사용이 가능합니다. 이런 부류의 SaaS가 누군가에겐 그저 빛 좋은 개살구에 지나지 않겠지만, 빠른 테스트/검증이 필요한 도모버스 팀에게는 이만한 솔루션도 없습니다.

트래픽 분산 / 로드밸런싱

로드가 큰 정적 콘텐츠는 AWS CloudFront를 통해 서빙하고 있습니다. 그 외의 API를 콜하는 경우는 모두 AWS의 ALB(Application Load Balancer)를 거쳐 서버로 트래픽이 인입됩니다. API 간 통신하는 Internal Traffic의 경우, VPC 내부에서만 호출 가능한 Internal ALB를 통해 트래픽을 주고받습니다.

로드밸런서는 보안 솔루션(특히 DDoS)이 아닙니다. 출처: memegenerator.net

서버(API)

도모버스의 모든 API 서비스는 컨테이너화되어 있으며, AWS의 서버리스 솔루션인 ECS Fargate 위에 배포되어 있습니다. 서버리스의 경우, vCPU를 0.25개 단위로 설정할 수 있어 컴퓨팅 리소스를 매우 효율적으로 사용할 수 있습니다. Auto Scaling으로 Replica를 생성하는 경우에도, EC2 대비 더 적은 리소스를 여러 대 띄워 트래픽 증가에 유연하게 대응할 수 있는 장점이 있습니다.

ECS Fargate 도입 과정은 별도의 아티클로 작성 중에 있으며, EKS 대신 ECS를 선택한 이유, EC2 대신 Fargate를 선택하게 된 이유와 현재 기술 스택의 한계에 대해 자세히 말씀드리고자 합니다.

DB

DB 역시 AWS의 관리형 서비스인 Amazon Aurora (MySQL Compatible)을 사용하고 있습니다. 도모버스에서는 서비스의 특성에 맞춰, DB를 3개의 클러스터로 분리하여 사용하고 있습니다.

  • User Cluster : 유저 개인정보 및 앱 내 유저 데이터 (닉네임, 학습 스케줄 이력 등)
  • Contents Cluster : 커리큘럼 추천 데이터, 강사별 학습 콘텐츠 데이터
  • Community Cluster : 앱 내 커뮤니티 데이터 (게시글, 댓글 등)
RDS Proxy 도입 전/후

도모버스 서비스에는 매 시간대마다 증가하는 트래픽의 특성이 있습니다. 특정 시간대에 증가하는 트래픽에 대응하기 위해, 도모버스는 Read Replica Node를 생성하는 대신, Lambda와 CloudWatch Events를 이용하여 Writer Node의 인스턴스 타입을 상향/하향하는 Scale up 방식을 사용중입니다. 이 과정에서 접속 순단으로 인한 사용자 불편을 최소화하기위해, 모든 클러스터에는 RDS Proxy를 배포하여 서비스하고 있습니다.

검색

Elastic Cloud는 생각보다 저렴하고 강력합니다.

도모버스 내의 다양한 도서 및 콘텐츠 검색 등은 ElasticSearch(이하 ES)를 통해 이루어집니다. 도모버스는 ES를 직접 구축하는 대신, Elastic Cloud에 총 3대의 노드로 ES 클러스터를 배포하였으며, 오픈소스 한국어 형태소 분석기인 nori를 사용하고 있습니다. 또한 매일매일 추가되는 콘텐츠 데이터의 경우, LogStash를 통해 실시간 증분 색인 처리를 진행합니다.

모니터링

서비스 개발 초기부터 모니터링 방식에 대해 많은 고민이 있었습니다. AWS CloudWatch만으로는 원하는 정보를 확인하고, 장애에 대응하기가 거의 불가능하기 때문인데요. 서드파티 모니터링 솔루션을 도입하기로 결정하고, New Relic, Datadog을 동시에 사용하며 비교한 끝에 Datadog을 도입, 6개월 가량 서비스를 운영하고 있습니다.

도모버스에서 사용중인 인프라 대시보드

도모버스는 APM, 인프라 모니터링 등 서버 리소스에 대한 모니터링과 사용자 세션 모니터링을 모두 Datadog을 통해 처리하고 있으며, 유저 세션과 서버 리소스 Metric이 유기적으로 연결되어 있어 장애 파악, 분석에 매우 많은 도움을 받고 있습니다. 그러나 최근 Datadog을 사용하며 많은(!) 이슈가 있었기에, 도모버스가 Datadog을 도입하고 사용하는 과정을 바로 다음 글에서 설명드리겠습니다.

--

--