Levando uma aplicação com 4 milhões de usuários para a nuvem com Azure e.net Fabrício Sanchez (@sanchezfabricio) Senior Technical Evangelist Microsoft
It s all about apps to the cloud
Transforming the Application Landscape ~2000 Today Monolithic Loosely Coupled Services Slow changing Rapidly updated Big Servers Many Small Servers
The New Challenge of Distributed Apps Static Website User DB Analytics DB Background Workers Web Front End Queue API Endpoint Development Test & QA Production Scale Out Virtual machines Server Cluster Disaster Recovery Developer Laptop 4 Server Data Center Public Cloud
Cenários-base de migrações Desenvolvimento de novas soluções (born to the cloud) Planejamento de novas soluções para a nuvem. Migração de soluções para PaaS Migração de soluções para os serviços de plataforma do Azure. Migração de soluções para IaaS Soluções que precisam ser migradas para IaaS apenas. Migração de soluções híbridas/mistas Migração de soluções para um modelo híbrido public and private (IaaS com PaaS).
PaaS, IaaS, misto ou híbrido? DEPENDE Perguntas que podem ajudar 1. É uma solução nova ou já existente? 2. Qual é a tecnologia base da solução?.net? PHP? Java? Pyton? 3. Roda atualmenteem Linux ou Windows? 4. Possui muitas customizações de ambiente? 5. O banco de dados, roda em servidor dedicado ou compartilhado? Possui customizações de ambiente? 6. Banco de dados: SQL? Oracle? MySQL? 7. Existe a necessidade de IP fixo na solução? 8. Serviços. Soap? REST? Precisam ser escaláveis? 9. IOPS de disco. Qual a importância para a natureza da aplicação? 10. Banco de dados: são múltiplos ou apenas 1? 11. Armanzenamento de arquivos: como é feito? Precisa ser SSD? 12. Deployment. Como será feito? 13. Usa recursos adicionais como: SOLR, NGINX, etc? 14. Necessita de segmentações de rede? 15. Qual o esforço de engenharia disponível para o projeto? 16. Usa SMS, Email, etc.? Precisa de domínio personalizado?
Secretaria Escolar Digital (SED) https://sed.educação.sp.gov.br A Secretaria Escolar Digital (SED) é uma plataforma online criada para centralizar, agilizar e facilitar todas as operações que envolvem a gestão diária da administração escolar. Típico cenário de missão crítica 4 milhões de usuários Utilizado diariamente por mais de 5k escolas Rotinas para professores, alunos e responsáveis
Tecnologias base utilizadas no host original Web ASP.NET MVC 4 Web API WCF Frameworks web ( jquery, Bootstrap, etc) Database Oracle RAC Host IIS 7 Windows Server 2008 R2
Informações adicionais do host original Oracle RAC 3 instâncias clusterizadas Cluster de aplicação 16 instâncias 8 cores 16 GB RAM 250 GB disco
Principais características técnicas Operações de banco de dados ad-hock Database de 4 TB +5k queries escritas para Oracle RAC Algumas cargas de dados automatizadas efetuadas por um main frame Diversas customizações de ambientes Ampla utlilização de sessions Gravação de arquivos diretamente no file system Sem utlilização de cache Sem scale-up e sem scale-out Tempo era um limitador: tinhamos apenas 3 meses
Qual o melhor caminho de migração? Conclusões sobre a aplicação Boa arquitetura mas muitos ajustes de queries Com algum esforço de engenharia blobs seriam viáveis Com algum esforço de engenharia cache seria viável Aplicação usa recursos customizados do IIS e do SO Conclusões sobre o banco de dados Migração para SQL Server era premissa Muitas rotinas de integração com main-frame Cada schema deveria ser tratado como novo banco Controle do ambiente necessário PaaS + IaaS Modelo Misto IaaS
O processo de migração Oracle RAC -> SQL Server 2x D14 com AlwaysOn Reescrita de todas as queries para SQL Server Query tunning para otimização de performance Implementação de Redis Cache para persistir sessions e alguns outros ítens Ajustes da aplicação para gravação em blobs Implementação de web farm (com VM s) para host da aplicação web 8x Standard A4 API s publicadas em Web Role com ajustes via Startup Task Implementação de autoscaling e load balancer (BD e Web Farm) Implantação do processo de CD/CI para este novo ambiente via VSTS
Arquitetura no Azure Blobs Cache API s n SED01 SED02 SED03 SED04 SEE-SQL1 (Reader) SEE-SQL2 (Writer) SED05 SED06 SED07 SED08 n n Availability Set (SED-APP) Virtual Network Always On Availability Set (SED-BD) Cloud Service (SED) Microsoft Azure
Visões de ambientes. Antes e depois... Banco de dados Difícil crescer horizontalmente e verticalmente... Fácil crescer horizontalmente e verticalmente... Uso de CPU (host original) Uso de CPU Microsoft Azure
Visões de ambientes. Antes e depois... Servidores de Aplicação Todas as máquinas ligadas 100% do tempo... Máquinas são ligadas apenas por demanda... Uso de CPU (host original) Uso de CPU Microsoft Azure
André Costa CIO Secretaria de Educação do Estado de São Paulo (Seduc)
Q&A