Amazon ECS로 이전하면서 서비스 성능이 크게 개선되었습니다. 서비스 응답 시간을 99번째 백분위수에서 50% 줄였습니다.
Jason Fischl 엔지니어링 담당 부사장

Remind는 교사들이 학생에게 텍스트 메시지를 보내고 학부모와 연락할 수 있도록 해 주는 웹 및 모바일 애플리케이션입니다. Remind 플랫폼의 사용자는 2,500만 명, 교사 수는 150만 명 이상이며, 매달 1,500만 건의 메시지를 전달합니다.

AWS re:Invent 2015 기조 연설 | Jason Fischl, Remind 엔지니어링 부사장 (7:44)

reinvent-remind
  • Remind는 타사 클라우드 PaaS(Platform-as-a-Service)를 사용해 전체 애플리케이션 인프라(메시지 전달 엔진, 프런트 엔드 API, 웹 클라이언트, 채팅 백엔드)를 모놀리식 애플리케이션으로 실행했습니다.
  • 확장 문제는 마이크로서비스 기반 아키텍처로 이전하는 계기가 됐지만 Remind는 PaaS 공급업체가 제공하는 제한적인 CPU, 메모리, 네트워크 성능 가시성에 만족할 수 없었습니다.
  • Remind는 리소스 활용을 개선하고 환경 일관성을 높이기 위해 Amazon Elastic Compute Cloud(Amazon EC2)에서 Docker를 사용하고자 했는데, 처음에 품은 생각은 개발자 효율을 위해 내부 PaaS 솔루션을 갖추자는 것이었습니다.
  • Remind는 Linux 기반 CoreOS와 플리트에 자체 PaaS를 구축하기 시작했지만 플리트와 키값 스토어 등은 불안정했습니다. 팀은 또 자체 클러스터 관리 시스템의 실행과 운영에 시간을 쏟고 싶지 않았습니다.

  • Remind는 운영의 단순성을 유지하기 위해 직접 AWS를 사용하기로 했습니다. Remind는 이미 Amazon Redshift, Amazon DynamoDB, Amazon Simple Storage Service(Amazon S3), Amazon CloudFront를 사용하고 있었습니다.
  • 엔지니어링 팀의 규모가 작고 클러스터 운영과 관리에 필요한 시간이나 전문성이 없었기 때문에 이 회사는 Amazon EC2 Container Service(Amazon ECS)에 PaaS를 구축하기로 결정했습니다.
  • Remind는 Amazon ECS의 PaaS 솔루션을 "Empire"라는 이름으로 소스를 공개했습니다.
  • Amazon ECS는 컨테이너 예약 및 통합을 제공하고, Elastic Load Balancing(ELB)은 Empire가 DNS를 서비스 발견에 사용할 수 있도록 합니다.
  • Empire는 Heroku 호환 API와 개발자가 Amazon ECS에서 애플리케이션을 쉽게 배포할 수 있게 해 주는 CLI를 제공합니다.

  • 관리형 서비스인 Amazon ECS는 운영 효율성을 제공함으로써 엔지니어링 리소스를 클러스터 운영과 유지 관리 대신 애플리케이션 개발과 배포에 집중시킬 수 있습니다.
  • Amazon ECS로의 이전은 안정성 향상과 지연 시간 감소 등 성능의 대폭 개선을 가져왔습니다.
  • Remind는 99번째 백분위수에서 응답 시간 2배 단축을 이뤘고, 분산이 줄어들고 스파이크는 감소했습니다.
  • AWS는 VPC와 애플리케이션 성능에 대한 향상된 가시성을 통해 보안 및 라우팅에 대한 제어를 제공합니다.

AWS가 Docker 컨테이너 관리에 어떤 도움을 줄 수 있는지 자세히 알아보려면 Amazon EC2 Container Service 세부 정보 페이지를 방문하십시오.