독일의 베를린에 위치한 Movinary는 고객이 자신의 사진으로 동영상을 제작하고 텍스트로 꾸밀 수 있도록 클라우드에 호스팅된 온라인 플랫폼을 제공합니다. 고객은 이 플랫폼에서 만든 동영상으로 결혼, 휴일 및 생일 등의 특별한 이벤트에 대한 자신만의 개인적인 이야기를 보여줄 수 있습니다. 각 동영상은 즉시 다운로드할 수 있어 고객은 동영상이 만들어진 후 즉시 주문할 수 있습니다.

창업자이자 CEO인 Maximilian Modl은 “전통적인 동영상 도구가 매우 복잡한 반면 Movinary는 최신 사용 지침을 기반으로 하며 제작 과정이 매우 직관적입니다."라고 말합니다.

처음에 Movinary는 많은 온라인 서비스가 갖는 문제와 유사한 비즈니스 문제에 직면했습니다. 회사는 잠재적으로 전 세계 사용자에게 서비스를 제공할 수 있는 확장 가능한 비즈니스 모델을 구축하기 원했습니다. 이 모델에는 회사의 전자 상거래 사이트(복잡하게 확장하는 Magento 시스템)에 대한 쉬운 서버 설정과 동영상 렌더링 프로세스를 위한 고성능 CPU가 필요했습니다.

AWS를 사용하기 전에 Movinary 팀은 온 프레미스 옵션과 클라우드 호스팅을 비교 연구했습니다. "우리는 우리 서비스가 유사한 서비스와 경쟁할 수 있도록 가능한 한 빠르고 효율적으로 만들려고 했습니다."라고 Modl은 말합니다. "우리에게 클라우드가 필요하다는 건 명확했습니다."

또한 회사는 Movinary가 기반으로 하는 일반 웹 기술(JavaScript Ajax 및 Flash 등)을 사용할 수 있는 솔루션을 찾고 있었습니다.

Movinary 팀은 처음부터 Amazon Web Services(AWS)와 작업하기로 선택했습니다. 회사는 다음과 같은 사항이 필요했습니다.

  • 일반 웹 기술에 해박함
  • 풍부한 CPU 성능
  • 고가용성
  • 글로벌로 확장할 수 있는 유연성

보안, 개인 정보 보호 및 설정의 간편함 또한 중요한 고려 대상이었습니다. Modl은 "AWS를 사용하여 고객이 자신의 모든 개인 동영상 및 사진을 안전하게 저장할 수 있는 서비스를 제공할 수 있습니다. 또한 AWS는 서버 설정이 간편해야 한다는 우리의 요구 사항에 부합되었습니다. Amazon Relational Database Service(Amazon RDS)와의 연결, Amazon Elastic Load Balancing 구성 및 확장 메커니즘 모두 작게 시작하고 빠르게 확장하라는 회사 내부의 IT 화두와 완벽하게 일치했습니다."라고 말합니다.

맞춤 설정된 동영상 렌더링의 처리는 좀 더 복잡했습니다. 렌더링은 고성능 CPU가 필요하고 가능한 한 빨라야 합니다.

Movinary의 경우 AWS는 다른 클라우드 솔루션에 비해 PHP, MySQL, Adobe AIR 및 Apache 웹 서버 같은 일반 웹 기술의 사용이라는 중요한 장점을 가지고 있었습니다. 그러한 기술은 그 회사의 플랫폼에 필수적입니다. 또한 CPU가 필요로 하는 컴퓨팅 용량을 제공했습니다.

"확장 서비스의 면에서 Amazon Elastic Load Balancer는 CPU 사용 등 사전 정의된 메트릭으로 사용이 쉽습니다."라고 Modl은 말합니다. "그 로드 밸런서가 실패하면 확장은 비전문가에 의해도 수행될 수 있습니다. 따라서 회사는 웹 개발 팀에 영향을 주지 않고 트래픽이 많은 마케팅 캠페인을 계획할 수 있습니다.

"Amazon Elastic Compute Cloud(Amazon EC2) 예약 인스턴스로 평상시의 트래픽 및 트래픽 피크 처리도 매우 원활하게 수행됩니다."라고 Modl은 말합니다. 하루 평균 3,000명이 Movinary 사이트를 방문합니다. 피크 시간(마케팅 실시 등)에는 최고 20,000명의 사용자가 Movinary에서 동시에 동영상 제작을 합니다.

필요한 CPU 파워를 포함하는 Windows 인스턴스의 사용은 그 회사의 개인화된 동영상 렌더링 엔진에서 잘 작동했습니다. "우리 개발자들은 Secure Shell(SSH)을 통해 서버를 완벽하게 제어합니다."라고 Modl은 말합니다. "기존 인프라와 서비스는 사용이 쉬우며 사전 정의된 이미지로 짧은 시간내에 설치가 가능합니다."

Movinary 팀은 Git를 사용하여 코드를 웹 서버에 배포합니다. 팀은 Linux 서버 기본 이미지를 만들어 Apache 웹 서버를 실행합니다. 인스턴스 부팅 프로세스에서 Git 리포지토리의 모든 변경 사항은 자동으로 풀링됩니다. 모든 것이 동기화되면 서버는 Elastic Load Balancer가 사용할 수 있도록 HTTP 요청을 수락합니다. 서버가 실행 중이면 리포지토리는 5분마다 자동으로 폴링되어 코드 변경 사항을 수신합니다.

다음 아키텍처 다이어그램에서 표시된 것처럼 Movinary 서비스는 많은 AWS 제품을 사용합니다.

Movinary Architecture Diagram 1

그림 1: 현재 Movinary 웹 서버 아키텍처

Movinary Architecture Diagram 2

그림 2: 계획된 Movinary 웹 서버 아키텍처

movinary-3-arch-diagram

그림 3: Movinary 클라우드 렌더러 아키텍처

Movinary 팀은 3개의 Amazon EC2 인스턴스(팀 클라우드 렌더러용 하나, 웹 서버용 하나, 데이터베이스용 하나)를 사용하고 있습니다. 클라우드 렌더러는 각 렌더링 요청에 대해 한 개 인스턴스를 시작하고 렌더링 요청이 더 이상 대기열에 없으면 인스턴스를 종료합니다. Movinary 웹 서버는 지연 시간에 의해 측정되어 자동으로 확장하고 데이터베이스는 읽기 전용 복제본을 사용하여 확장하는데 이는 쓰기 요청보다 읽기 요청이 훨씬 더 많은 웹 상점에서 적합합니다. 현재 Movinary는 사용자 동영상, 이미지 및 동영상 템플릿을 위해 67GB의 이미지, PDF 및 동영상을 Amazon Simple Storage Service(Amazon S3)에 저장하고 있습니다.

Movinary 팀의 AWS 서비스 사용법에 대한 자세한 내용은 다음을 참조하세요.

  • Amazon CloudWatch는 웹 인스턴스를 확장하는 데 사용되고 서비스에 액세스할 수 없는 경우 이메일을 통해 알림을 전송합니다.
  • Amazon RDS는 온라인 상점 정보에 사용됩니다.
  • Movinary 클라우드 렌더러 엔진(클라우드에서 렌더링된 사진 및 템플릿으로 개별 동영상을 만드는 서비스)은 Windows 머신에서 실행하며 렌더러 자체는 Flash로 작성되어 있습니다.
  • Magento는 Movinary 웹 사이트에 사용되고 전자 상거래 시스템(쇼핑 애플리케이션)으로도 사용되는데 회사 인프라(Amazon EC2 및 Amazon RDS)에서 실행하기 위해서 PHP 및 MySQL이 필요합니다.
  • GWT는 동영상 제작 과정에 원활한 환경을 제공하는 데 사용됩니다.
  • Varnish Cache는 사이트를 캐시하고 고객에게 빠르게 반응하는 웹 서비스를 제공합니다.
  • Apache Tomcat 서버는 클라우드 렌더러에 대한 요청을 수락하고 모니터링하는 데 사용됩니다.
  • Adobe AIR 및 Avidemux는 백 엔드에서 고객의 동영상을 렌더링하는 데 사용됩니다.

AWS 사용으로 Movinary 팀은 운영 환경으로 빠르게 이동할 수 있었습니다. "우리는 로컬 머신에서 시작했는데 얼마나 쉽게 서비스를 AWS 클라우드 기술로 이전할 수 있는지에 놀랐습니다."라고 Modl은 말합니다. "특히 미리 정의된 Amazon Machine Images(AMI) 및 Elastic Load Balancer를 사용하여 한 달 만에 로컬에서 운영 환경으로 이동할 수 있었습니다."

또한 팀은 Amazon EC2를 사용하여 성과를 향상시켰습니다. "동영상 맞춤 설정 백 엔드는 높은 성능을 요구합니다."라고 Modl은 말합니다, "우리는 m1-medium 인스턴스가 우리 CPU 성능 및 RAM 요구 사항에 완벽하게 일치한다는 걸 알게 되어 만족스러웠습니다. 클릭 두 번으로 인스턴스의 디스크 공간을 늘릴 수 있어서 많은 시간이 절약됩니다."

Amazon RDS에 대해 Modl은 다음과 같이 맙합니다. "AWS는 백업 및 업데이트를 관리합니다. 또한 인프라를 반자동으로 확장합니다. 우리 시스템은 쓰기 요청보다 훨씬 더 많은 읽기 요청을 생성하는데 이는 Amazon RDS에서 제공되는 확장 기능으로 지원됩니다."

클라우드에 서비스를 호스팅하면 Movinary가 할당된 인스턴스를 동적으로 변경할 수 있어 더욱 비용 효율적임이 입증되었습니다. 그 구조는 확장 가능한 인프라에서 사용자 지정이 매우 쉬운 솔루션을 사용할 수 있도록 해줍니다.

Movinary 팀은 현재 Amazon RDS 및 Amazon ElastiCache를 평가하고 있으며 렌더링 대기열을 처리하는 데 Amazon Simple Queue Service(Amazon SQS)를 사용할 수 있습니다.

Movinary는 AWS 사용을 고려하는 다른 개발자에게 CPU 사용을 기반으로 Auto Scaling을 시작하는 것이 좋다고 조언합니다. "추가 메트릭을 수집한 후 다른 측정값 및 확장 기술을 사용해 확장 기능을 향상할 수 있습니다."라고 Modl은 말합니다. 팀은 Amazon EC2 인스턴스 설정에 약간의 재작업이 필요했습니다. 사용할 수 있는 사전 구성된 이미지가 많습니다.

또한 팀은 Amazon EC2 인스턴스 설정에 대해 약간이 재작업만으로 사용할 수 있는 사전 구성된 이미지가 많다는 것도 알게 되었습니다.

Modl은 AWS를 사용하도록 결정한 것은 시작부터 옳았다고 말합니다. "AWS가 제공할 수 있는 것과는 비교할 수 있는 대상은 없습니다."

AWS 및 웹 애플리케이션에 대한 자세한 내용은 http://aws.amazon.com/web-mobile-social/을 참조하십시오.