Localizada em Berlim, Alemanha, a movinary oferece uma plataforma on-line hospedada em nuvem que permite que os clientes criem vídeos a partir de suas fotos e incluam textos no vídeo. Usando esses vídeos, os clientes podem contar histórias pessoais e exclusivas sobre eventos especiais como casamentos, feriados e aniversários. É possível fazer download dos vídeos imediatamente, permitindo que os clientes comprem o vídeo imediatamente após sua criação.

Maximilian Modl, fundador e CEO, afirma que "Embora as ferramentas de vídeo tradicionais sejam muito complexas, a movinary é baseada em diretrizes de usabilidade avançadas. O processo de criação é totalmente intuitivo."

Inicialmente, a movinary enfrentou desafios empresariais semelhantes aos de muitos serviços on-line. A empresa desejava configurar um modelo de negócios escalável, com potencial para atender a um público global. Esse modelo exigia facilidade de configuração de servidores para o site de comércio eletrônico (um sistema Magento com escalabilidade complexa) e grande capacidade de CPU para o processo de renderização de vídeo.

Antes de adotar a AWS, a equipe da movinary pesquisou e fez comparações entre opções locais e com hospedagem na nuvem. "Queríamos que nosso serviço fosse o mais rápido e eficiente possível para competir com serviços semelhantes", diz Modl. "Ficou claro que precisaríamos da nuvem."

Eles também procuraram por uma solução que permitisse usar as tecnologias da web comuns (como JavaScript (Ajax) e Flash) utilizadas pela movinary.

A equipe da movinary optou por trabalhar com a Amazon Web Services (AWS) desde o início. Eles precisavam de:

  • Fluência em tecnologias da web comuns
  • Abundância de capacidade de CPU
  • Alta disponibilidade
  • Flexibilidade para expansão global

Segurança, privacidade e facilidade de configuração também eram aspectos importantes. Modl comenta que "Com a AWS, podemos fornecer um serviço que permite aos clientes armazenar todos seus vídeos e fotografias pessoais com segurança. A AWS também atendeu às nossas necessidades de facilidade de configuração dos servidores. A conexão com o Amazon Relational Database Service (Amazon RDS), a configuração do Amazon Elastic Load Balancing e o mecanismo de escalabilidade se encaixam perfeitamente no nosso lema interno de TI: começar pequeno, escalar rápido."

O tratamento da renderização de vídeo personalizada foi um pouco mais complicado. A renderização exige uma grande quantidade de capacidade de CPU e deve ser executada com a maior rapidez possível.

Para a movinary, a AWS tinha uma vantagem importante sobre as outras soluções em nuvem: o uso de tecnologias da web comuns como PHP, MySQL, Adobe AIR e servidores da web Apache. Essas tecnologias são essenciais para a plataforma da empresa. E também forneciam a capacidade de CPU necessária.

"Em termos de escalabilidade de um serviço, o Amazon Elastic Load Balancer é fácil de usar com métricas pré-definidas, como uso de CPU", diz Modl. "Se o load balancer falhar, a escalabilidade pode ser executada por pessoas não profissionais. Com isso, podemos planejar campanhas de marketing com expectativa de alto tráfego sem afetar a equipe de desenvolvimento da web.

"As instâncias reservadas do Amazon Elastic Compute Cloud (Amazon EC2) processam o tráfego normal e os picos de tráfego muito bem", continua Modl. Em média, a movinary recebe cerca de 3.000 visitas por dia. Durante os momentos de pico (como em lançamentos de marketing), o número de usuários criado vídeos simultaneamente na movinary chegou a 20.000.

O uso de instâncias Windows com a capacidade de CPU necessária funcionou bem com o mecanismo de renderização de vídeo personalizado da empresa. “Nossos desenvolvedores têm controle total sobre os servidores por meio do Secure Shell (SSH)”, diz Modl. "A infraestrutura e os serviços existentes são fáceis de usar e a configuração com imagens pré-definidas é bastante rápida."

A equipe da movinary usa o Git para implementar o código no servidor da web. A equipe criou uma imagem básica de um servidor Linux para execução como um servidor da web Apache. No processo de inicialização da instâncias, todas as alterações feitas no repositório do Git são obtidas automaticamente. Se tudo é sincronizado, o servidor aceita solicitações HTTP, ficando disponível para o Elastic Load Balancer. Se o servidor está em execução, o repositório é consultado automaticamente a cada cinco minutos para a obtenção de mudanças no código.

O serviço da movinary usa vários produtos da AWS, como mostrado no diagrama de arquitetura a seguir.

Movinary Architecture Diagram 1

Figura 1: arquitetura atual do servidor da web da movinary

Movinary Architecture Diagram 2

Figura 2: arquitetura planejada do servidor da web da movinary

movinary-3-arch-diagram

Figura 3: arquitetura do renderizador em nuvem da movinary

A equipe da movinary está usando três instâncias do Amazon EC2: uma para o renderizador em nuvem, uma para o servidor da web e uma para o banco de dados. O renderizador em nuvem inicia uma instância para cada solicitação de renderização e encerra a instância se não houver mais solicitações de renderização na fila. O servidor da web da movinary escala automaticamente, de acordo com a latência, e o banco de dados escala com réplicas de leitura, o que funciona bem para lojas da web, onde é executado um número muito maior de solicitações de leitura que de solicitações de gravação. No momento, a movinary armazena 67 GB de imagens, PDFs e vídeos no Amazon Simple Storage Service (Amazon S3) para vídeos, imagens e modelos de vídeo de usuários.

Veja a seguir mais informações sobre como a equipe da movinary usou os serviços da AWS.

  • O Amazon CloudWatch é usado na escalabilidade de instâncias da web e para enviar notificações por e-mail caso o serviço não esteja acessível.
  • O Amazon RDS é usado para as informações da loja on-line.
  • O mecanismo de renderização em nuvem da movinary (um serviço que cria um vídeo individual a partir das fotos e dos modelos, renderizado na nuvem) é executado em máquinas Windows e o renderizador é escrito em Flash.
  • O Magento é usado para o website da movinary e como sistema de comércio eletrônico (o aplicativo de compras), o que requer que PHP e MySQL sejam executados na infraestrutura da empresa (Amazon EC2 e Amazon RDS).
  • O GWT é usado para criar uma experiência integrada no processo de criação do vídeo.
  • O Varnish Cache é usado para armazenar o site em cache e oferecer um serviço da web rápido aos clientes.
  • Um servidor Apache Tomcat é usado para aceitar e monitorar as solicitações enviadas ao nosso renderizador em nuvem.
  • O Adobe AIR e o Avidemux são usados para renderizar os vídeos dos clientes no back end.

O uso da AWS permitiu que a equipe da movinary colocasse o sistema em produção rapidamente. "Começamos em máquinas locais e ficamos surpresos com a facilidade da migração de nosso serviço para a tecnologia da nuvem da AWS", afirma Modl. "Especificamente, as imagens de máquina da Amazon (AMIs) pré-definidas e o Elastic Load Balancer nos ajudaram colocar o sistema em produção em um mês."

A equipe também melhorou o desempenho com o Amazon EC2. "O nosso back end de personalização de vídeo exige uma grande capacidade de desempenho", diz Modl, "e ficamos satisfeitos ao constatar que as instâncias m1-medium eram a solução perfeita para nossas necessidades de desempenho de CPU e RAM. A capacidade de aumentar a quantidade de espaço em disco para a nossa instância com apenas dois cliques economizou bastante tempo."

Em relação ao Amazon RDS, Modl comenta que "A AWS gerencia os backups e as atualizações. Além disso, escala a infraestrutura de forma semiautomática. Nosso sistema gera muito mais solicitações de leitura que solicitações de gravação, o que é suportado pela escalabilidade oferecida pelo Amazon RDS."

A hospedagem do serviço na nuvem é mais econômica porque permite que a movinary altere dinamicamente as instâncias alocadas. A estrutura possibilita uma solução altamente personalizável em uma infraestrutura escalável.

No momento, a equipe da movinary está avaliando o Amazon RDS e o Amazon ElastiCache e pode usar o Amazon Simple Queue Service (Amazon SQS) para tratar a fila de renderização.

Para outros desenvolvedores que consideram usar a AWS, a movinary recomenda começar com auto scaling baseado em uso de CPU. "Depois de coletar métricas adicionais, é possível aprimorar a escalabilidade selecionando outras técnicas de medição e escalabilidade", afirma Modl. A configuração das instâncias do Amazon EC2 exigiu um pouco de retrabalho da equipe. Existem várias imagens pré-configuradas disponíveis.

A equipe também descobriu que, na configuração das instâncias do Amazon EC2, existem várias imagens pré-configuradas disponíveis que podem ser usadas com um pouco de retrabalho.

De acordo com Modl, a decisão de usar a AWS foi correta desde o início. "Não há nada comparável ao que a AWS pode oferecer."

Para obter mais informações sobre a AWS e aplicativos da web, consulte http://aws.amazon.com/web-mobile-social/.