EDUCAÇÃO ELÁSTICA: USANDO AWS, BIG QUERY E O STACK MICROSOFT EM AGENDA Breve histórico da iLang Porque WISA? Visão geral do stack Evolução da arquiterura da solução Lições aprendidas HISTÓRICO 2006: Fundada como plataforma para ensino de idiomas 2008: Pivot para plataforma de ensino à distância/gestão acadêmica 2009: Contrato com diversas escolas de ensino fundamental/médio 2010: Contrato com a IUNI educional 2011: Início da plataforma social/acadêmica 2013: Contrato com 3 das 5 maiores instituições de ensino do Brasil DESAFIOS Suportar um crescimento exponencial da base de usuários Grande sazonalidade: mais de 80% dos alunos fazem entregas no último dia/hora Manter o time de desenvolvimento pequeno mesmo com o crescimento da solução/base de usuário WISA Porque WISA? Experiência anterior do time de desenvolvimento Produtividade proporcionada por C# + Visual Studio Fácil de encontrar profissionais no mercado Stack de Tecnologias do iLang EVOLUÇÃO DA ARQUITETURA Único servidor Servidor web + banco de dados 2 servidores web + banco de dados (load balancer) Servidor de aplicação Migração para a nuvem Servidores de aplicação + filas + web workers Divisão em data centers Google Big Query SINGLE SERVER WEB + DATABASE SERVER WEB SERVERS + DATABASE SERVER WEB SERVERS + DATABASE SERVER Elimação de session in proc NÃO utilização do sistema de arquivos local Certificado SSL no Load Balancer HERE COMES THE APPLICATION SERVER AWS MIGRATION AWS MIGRATION PLANEJAMENTO Diversas POC Medições da performance dos servidores na nuvem Maior preocupação era o servidor de banco de dados Migração “As It Is” TWO DATA CENTERS TWO DATA CENTERS Garantir que mesmo em uma eventual falha e uma AZ não ficaremos fora do ar Redundância de todos os servidores Eliminação dos SPOFs GOOGLE BIG QUERY Gravar log de chamadas a nossa API Gravarmos cada uma das chamadas, parâmetros e resultado da chamado Mais de 5 milhões de chamada por dia (e crescendo exponencialmente) GOOGLE BIGQUERY GOOGLE BIGQUERY GOOGLE BIGQUERY Serviço do Google Cloud Plataform Banco de dados “relacional” com suporte a terabytes de dados Read-only Armazenamos mais de 70 TB de dados (log) API REST para integração Lições Aprendidas & Recomendações LIÇÕES APRENDIDAS Cache, cache e mais cache Dados Cache de dados no banco de dados (SSD) Cache de dados no Redis Cache de dados no web (inproc) Arquivos via proxy reverso, CDN e browser Automatize o processo de build e deployment Monitoramento das aplicações LIÇÕES APRENDIDAS MTT / MTR (meantime to detect meantime to repair) Assumptions are evil Pessoas fazem a diferença Recomendados Cloud para gerenciar sazolidade Cloud para ambientes de testes REFERÊNCIAS http://stackoverflow.com/questions/177901/what-does-wisc-stack-mean http://highscalability.com/blog/2014/7/21/stackoverflow-update-560mpageviews-a-month-25-servers-and-i.html https://cloud.google.com/ http://aws.typepad.com/brasil/2013/08/estudo-de-caso-aws-ilang-educacao. html CONTATO Twitter joao_talles LinkedIn http://br.linkedin.com/in/joaotalles/ Facebook https://www.facebook.com/joao.talles Email [email protected]