QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

17
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

Transcript of QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

Page 1: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

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

Page 2: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

It’s all about apps to the cloud

Page 3: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

Transforming the Application Landscape

Loosely Coupled Services

Many Small Servers

~2000 Today

Monolithic

Big Servers

Slow changing

Rapidly updated

Page 4: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

The New Challenge of Distributed Apps

4

Virtual machines

Server Public Cloud

Disaster Recovery

Developer Laptop

Server Cluster

Data Center

Static Websit

e

Web Front EndBackground Workers

User DB Analytics DB

QueueAPI

Endpoint

Development Test & QA Production Scale Out

Page 5: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

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 PaaSMigração de soluções para os serviços de plataforma do Azure.

Migração de soluções para IaaSSoluções que precisam ser migradas para IaaS apenas.

Migração de soluções híbridas/mistasMigração de soluções para um modelo híbrido – public and private (IaaS com PaaS).

Page 6: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

PaaS, IaaS, misto ou híbrido?

DEPENDEPerguntas 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 atualmente em 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?

Page 7: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

Secretaria Escolar Digital (SED)A Secretaria Escolar Digital (SED) é uma plataforma on-line criada para centralizar, agilizar e facilitar todas as operações que envolvem a gestão diária da administração escolar.

• 4 milhões de usuários• Utilizado diariamente

por mais de 5k escolas• Rotinas para

professores, alunos e responsáveis

https://sed.educação.sp.gov.br

Típico cenário de missão crítica

Page 8: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

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

Page 9: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

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

Page 10: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

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

Page 11: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

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

IaaS

Modelo Misto

Page 12: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

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

Page 13: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

Arquitetura no Azure

Availability Set (SED-APP)

SED01 SED02 SED03 SED04

SED05 SED06 SED07 SED08

SEE-SQL1

(Reader)

SEE-SQL2

(Writer)

Always OnAvailability Set (SED-BD)

… … … n

Cloud Service (SED)

Virtual Network

Blobs Cache n

Microsoft Azure

API’s

… n

Page 14: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

Visões de ambientes. Antes e depois...

Uso de CPU(host original)

Banco de dados

Uso de CPUMicrosoft Azure

Fácil crescer horizontalmente e verticalmente...

Difícil crescer horizontalmente e verticalmente...

Page 15: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

Visões de ambientes. Antes e depois...Servidores de Aplicação

Uso de CPU(host original)

Uso de CPUMicrosoft Azure

Máquinas são ligadas apenas por demanda...Todas as máquinas ligadas 100% do tempo...

Page 16: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

André CostaCIO | Secretaria de Educação do Estado de São Paulo (Seduc)

Page 17: QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure

Q&A