SlideShare uma empresa Scribd logo
Projetando aplicações para a nuvem
Agenda
Cloud computing
Modelo distribuído de infraestrutura computacional
que disponibiliza serviços de alto nível para
hospedagem de aplicações, acessíveis através da
internet.
Alguns serviços nativamente distribuídos no Azure
Alguns serviços nativamente distribuídos no Azure
Service Fabric
Linux
Windows
Alguns serviços nativamente distribuídos no Azure
Azure Container Service
Outros serviços distribuídos
• Azure SQL Databases
• Cosmos DB
• Azure Service Bus
• Azure Redis Cache
• Azure Functions
• Dentre tantos outros
But…
… se a nuvem é uma
estrutura de recursos
distribuídos, por que
se insiste em levar
aplicações que não
funcionam de maneira
distribuída pra lá?
Um caso real
1
2
3
4
5
Alguns problemas
Um possível
refactoring no Azure
Sobre distribuição de aplicações
Aplicações distribuídas
Uma aplicação distribuída é
um software que é
executado sobre diversos
computadores ligados por
uma rede. As partes desta
aplicação interagem entre si
através de algum padrão.
Por que distribuir é importante?
Escalabilidade e performance
Aplicações não distribuídas somente podem ser escaladas de maneira ineficiente. Ou se faz “scale up” (aumenta o tamanho da VM), ou
se faz ”scale out” de serviços que não necessariamente precisariam ser escalados. Aplicações distribuídas podem ser facilmente e
eficientemente escaladas, entregando também, performance.
Alta disponibilidade
Ao se distribuir uma aplicação corretamente, a possibilidade de outage é reduzida em larga escala, uma vez que os serviços são todos
replicados e escalados de maneira independente. Aplicações não distribuídas, em geral, possuem grandes taxas de outages.
Economia
Uma vez que os recursos são distribuídos de maneira descentalizada e portanto, mais focados nas regras de negócios específicas que
eles precisa resolver, eles podes ser escalados de maneira eficiente e rodar em tiers mais baratos. Isso implicará, necessariamente, em
economia.
Crecimento controlado
Arquiteturas distribuídas proporcionam um controle mais efetivo do crescimento da infraestrutura, já que é possível crescer partes
individuais de acordo com a demanda.
Aplicações existentes
Novas aplicações
Como distribuir uma
aplicação existente?
Aplicação projetada para ser distribuída (Arda)
Dashboard
web
Power
BI
Others Permissions / Security
Internet
Kanban
Intelligence Crowler
ReportsAuthentication / Users
Aplicação projetada para ser distribuída (Arda)
Arda
 Azure Active Directory
 Azure App Services
 Web App
 API App
 Azure SQL Database
 Azure Redis Cache
 Azure Storage (blob)
 SendGrid (free tier)
https://github.com/DXBrazil/Arda
Nem tudo são flores…
Muitos componentes
Como é possível imaginar, distribuir aplicações significa necessariamente aumentar a quantidade de componentes do ambiente. E claro, componentes são
sempre pontos de monitoramento e talvez, falha.
Segurança
Geralmente as partes de uma aplicação são estruturadas através de APIs. É preciso claro, possuir uma estratégia bem definida de segurança para proteger
todos os aspectos da aplicação.
Complexidade
Com o aumento considerável de componentes na arquitetura, é claro que aumenta em igual proporção a complexidade do mesmo.
Rede
Ambientes distribuídos são amplamente dependentes da rede que os liga. Instabilidades na comunicação poderão comprometer a performance e
funcionamento do ambiente. Latência na comunicação entre os serviços é outro aspecto relacionado às redes.
Microserviços
Microservices são estruturas natualmente distribuídas e naturalmente surgem como opção para novos projetos. Entretanto, é possível distribuir aplicações
monolíticas com com serviços maiores.
Serviços úteis na distribuição de apps no Azure
Considerações escalabilidade no Azure
Considerações sobre escalabilidade no Azure
Functions
Auto-gerenciado
Web App
Escala automática ou manual
Escala por tier
Escala por SKU (scale up)
Escala por número de instâncias (scale out)
Escala baseada em condições com definição de regras
Application Gateway
Manualmente escalável
Escala por tier
Escala por SKU
Escala por número de instâncias (scale out)
VM Scale Sets
Escala automática ou manual
Escala por tier
Escala por SKU (scale up)
Escala por número de instâncias (scale out)
Escala por métricas de processamento/memória
Service Bus
Auto-gerenciado
Storage
Auto-gerenciado
Redis
Escala por tier
Projetando aplicações para a nuvem
Considerações sobre escalabilidade no Azure
Containers
De maneira geral, escala feita por algum orquestrador (Kubernetes, Swarm, etc)
Processo de escala mais complexo
Com Kubernetes é feito via Jobs -> Pods -> Containers
Pode ser realizado sobre ACS ou máquinas virtuais convencionais
Baseado em fila? Recursos do host? Recursos do container?
https://github.com/DXBrazil/ContainerNanny
Considerações sobre serverless
Considerações sobre serverless
Serverless traz a ideia de
terceirização de processamento.
A ideia é que seja possível terceirizar
rotinas de uma aplicação para que
elas sejam executadas apenas sob
demanda, sem saber ”quem”
executará as mesmas. Algumas
vantagens são:
- Redução de custos
- Altamente escalável
- Desacoplamento
- DevOps simplificado
- Segurança
- Multi linguagens Uma ótima maneira de distribuir aplicações

Projetando aplicações para a nuvem
Recomendações finais
Recomendações finais
Load balacing
O monitoramento de probe é crítico para um bom comportamento
Existem diferentes tipos de balanceanto de carga no Azure. Estude e escolha o melhor para seu cenário
Sempre que possível, utilize Application Gateway para balancing
Se a aplicação for stateful
Existe a possibilidade de ser ajustada para ser stateless?
Se não, atente para o uso correto de “stick sessions” (source IP ou cookies)
Lembre que o uso de “stick sessions” impacta negativamente na performance do LB
Opte, sempre que possível, por cache para persistir informações
Localização dos recursos
Opte, sempre que possível, por colocar recursos em uma mesma região
Recomenda-se sempre ter um ambiente redundante com Traffic Manager na frente
Recursos PaaS em uma mesma região, comunicam-se na rede local do DC. Baixíssima latência
Máquinas Virtuais
Procure utilizar sempre discos gerenciados
Se utilizar storages convencionais, evite colocar múltiplas VMs no mesmo storage (IOPS)
App Gateways gerenciam VMs em outras redes, entretanto, há perca de performance
Para estudar…
Links para estudo
Azure Cloud Design Patterns
https://docs.microsoft.com/en-us/azure/architecture/patterns/
Azure Architecture Center
https://docs.microsoft.com/en-us/azure/architecture/
Technical Case Studies
https://microsoft.github.io/techcasestudies/
Rock in Rio: https://microsoft.github.io/techcasestudies/devops/2017/05/23/rock-in-rio.html
fabriciosanchez.com.br | @sanchezfabricio |

Mais conteúdo relacionado

Mais procurados

Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
Amazon Web Services LATAM
 
Computacao em nuvem
Computacao em nuvemComputacao em nuvem
Computacao em nuvem
Sirius Interativa
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deployments
Ricardo Martins ☁
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
Yros
 
Global Azure Bootcamp 2018 - Belo Horizonte - Paulovich
Global Azure Bootcamp 2018 - Belo Horizonte - PaulovichGlobal Azure Bootcamp 2018 - Belo Horizonte - Paulovich
Global Azure Bootcamp 2018 - Belo Horizonte - Paulovich
André Paulovich
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
Alê Borba
 

Mais procurados (6)

Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Computacao em nuvem
Computacao em nuvemComputacao em nuvem
Computacao em nuvem
 
Iac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deploymentsIac & DevOps no Azure: Automatizando deployments
Iac & DevOps no Azure: Automatizando deployments
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
 
Global Azure Bootcamp 2018 - Belo Horizonte - Paulovich
Global Azure Bootcamp 2018 - Belo Horizonte - PaulovichGlobal Azure Bootcamp 2018 - Belo Horizonte - Paulovich
Global Azure Bootcamp 2018 - Belo Horizonte - Paulovich
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 

Semelhante a Projetando aplicações para a nuvem

AAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcambAAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcamb
guest34ed8ec
 
AAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcambAAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcamb
Microsoft Brasil
 
Azure Overview
Azure OverviewAzure Overview
Azure Overview
Fabian Gehrke
 
Overview Azure
Overview AzureOverview Azure
Overview Azure
Fabian Gehrke
 
Melhores práticas de workloads Microsoft na AWS
Melhores práticas de workloads Microsoft na AWSMelhores práticas de workloads Microsoft na AWS
Melhores práticas de workloads Microsoft na AWS
Amazon Web Services LATAM
 
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
Dan El Pierre Rezende
 
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfAAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
Microsoft Brasil
 
Computação em nuvem com aws (amozon web service)
Computação em nuvem com aws (amozon web service)Computação em nuvem com aws (amozon web service)
Computação em nuvem com aws (amozon web service)
Augusto Berwaldt
 
Introdução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - WebinarIntrodução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - Webinar
Amazon Web Services LATAM
 
Nuvens híbridas: Conectando aplicações locais com a nuvem na plataforma Windo...
Nuvens híbridas:Conectando aplicações locais com a nuvem na plataforma Windo...Nuvens híbridas:Conectando aplicações locais com a nuvem na plataforma Windo...
Nuvens híbridas: Conectando aplicações locais com a nuvem na plataforma Windo...
Osvaldo Daibert
 
Introdução ao Auto Scaling
Introdução ao Auto ScalingIntrodução ao Auto Scaling
Introdução ao Auto Scaling
Amazon Web Services LATAM
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Lenin Abadie
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Renato Groffe
 
Azure @ Rio Cloud Meetup
Azure @ Rio Cloud MeetupAzure @ Rio Cloud Meetup
Azure @ Rio Cloud Meetup
Ricardo Martins ☁
 
Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWS
Matheus Fidelis
 
Pres clusterpdf
Pres clusterpdfPres clusterpdf
Pres clusterpdf
Roberto Nou
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
Amazon Web Services LATAM
 
Docker para devs .NET
Docker para devs .NETDocker para devs .NET
Docker para devs .NET
Fabrício Lopes Sanchez
 
Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2
Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2
Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2
Amazon Web Services LATAM
 
Infraestrutura de cloud computing
Infraestrutura de cloud computingInfraestrutura de cloud computing
Infraestrutura de cloud computing
Fabio Leandro
 

Semelhante a Projetando aplicações para a nuvem (20)

AAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcambAAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcamb
 
AAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcambAAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcamb
 
Azure Overview
Azure OverviewAzure Overview
Azure Overview
 
Overview Azure
Overview AzureOverview Azure
Overview Azure
 
Melhores práticas de workloads Microsoft na AWS
Melhores práticas de workloads Microsoft na AWSMelhores práticas de workloads Microsoft na AWS
Melhores práticas de workloads Microsoft na AWS
 
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
AWS SUMMIT São Paulo - DEV02 AWS e DevOps - Explore e aproveite o melhor dos ...
 
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdfAAB308 - Cloud Computing Windows Azure - wcamb.pdf
AAB308 - Cloud Computing Windows Azure - wcamb.pdf
 
Computação em nuvem com aws (amozon web service)
Computação em nuvem com aws (amozon web service)Computação em nuvem com aws (amozon web service)
Computação em nuvem com aws (amozon web service)
 
Introdução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - WebinarIntrodução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - Webinar
 
Nuvens híbridas: Conectando aplicações locais com a nuvem na plataforma Windo...
Nuvens híbridas:Conectando aplicações locais com a nuvem na plataforma Windo...Nuvens híbridas:Conectando aplicações locais com a nuvem na plataforma Windo...
Nuvens híbridas: Conectando aplicações locais com a nuvem na plataforma Windo...
 
Introdução ao Auto Scaling
Introdução ao Auto ScalingIntrodução ao Auto Scaling
Introdução ao Auto Scaling
 
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
Uma Arquitetura para a Implantação Automática de Serviços em Infraestruturas ...
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
 
Azure @ Rio Cloud Meetup
Azure @ Rio Cloud MeetupAzure @ Rio Cloud Meetup
Azure @ Rio Cloud Meetup
 
Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWS
 
Pres clusterpdf
Pres clusterpdfPres clusterpdf
Pres clusterpdf
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Docker para devs .NET
Docker para devs .NETDocker para devs .NET
Docker para devs .NET
 
Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2
Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2
Visão Geral da Nuvem da AWS e como estimar sua conta Parte 1 de 2
 
Infraestrutura de cloud computing
Infraestrutura de cloud computingInfraestrutura de cloud computing
Infraestrutura de cloud computing
 

Mais de Fabrício Lopes Sanchez

Azure Lab Services
Azure Lab ServicesAzure Lab Services
Azure Lab Services
Fabrício Lopes Sanchez
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida real
Fabrício Lopes Sanchez
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
Fabrício Lopes Sanchez
 
Soluções de IoT no Microsoft Azure
Soluções de IoT no Microsoft AzureSoluções de IoT no Microsoft Azure
Soluções de IoT no Microsoft Azure
Fabrício Lopes Sanchez
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Fabrício Lopes Sanchez
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
Fabrício Lopes Sanchez
 
Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos? Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos?
Fabrício Lopes Sanchez
 
O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)
Fabrício Lopes Sanchez
 
A Nova Web
A Nova WebA Nova Web
Windows Azure: computação em nuvem no melhor estilo self-service
Windows Azure: computação em nuvem no melhor estilo self-serviceWindows Azure: computação em nuvem no melhor estilo self-service
Windows Azure: computação em nuvem no melhor estilo self-service
Fabrício Lopes Sanchez
 
SSI 2012 - Computação em Nuvem
SSI 2012 - Computação em NuvemSSI 2012 - Computação em Nuvem
SSI 2012 - Computação em Nuvem
Fabrício Lopes Sanchez
 
Desenvolvimento de aplicações para Windows Azure
Desenvolvimento de aplicações para Windows AzureDesenvolvimento de aplicações para Windows Azure
Desenvolvimento de aplicações para Windows Azure
Fabrício Lopes Sanchez
 
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Fabrício Lopes Sanchez
 
Web Dev Camp
Web Dev CampWeb Dev Camp
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
Fabrício Lopes Sanchez
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
Fabrício Lopes Sanchez
 
Interop Day 2011 - Construindo aplicações web com WebMatrix
Interop Day 2011 - Construindo aplicações web com WebMatrixInterop Day 2011 - Construindo aplicações web com WebMatrix
Interop Day 2011 - Construindo aplicações web com WebMatrix
Fabrício Lopes Sanchez
 
QS24 - REST e SOAP com Razor e WebMatrix
QS24 - REST e SOAP com Razor e WebMatrixQS24 - REST e SOAP com Razor e WebMatrix
QS24 - REST e SOAP com Razor e WebMatrix
Fabrício Lopes Sanchez
 
Conhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCConhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVC
Fabrício Lopes Sanchez
 
Web em grande estilo com CSS 3
Web em grande estilo com CSS 3Web em grande estilo com CSS 3
Web em grande estilo com CSS 3
Fabrício Lopes Sanchez
 

Mais de Fabrício Lopes Sanchez (20)

Azure Lab Services
Azure Lab ServicesAzure Lab Services
Azure Lab Services
 
Microserviços na vida real
Microserviços na vida realMicroserviços na vida real
Microserviços na vida real
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Soluções de IoT no Microsoft Azure
Soluções de IoT no Microsoft AzureSoluções de IoT no Microsoft Azure
Soluções de IoT no Microsoft Azure
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos? Por que Cloud Services é o melhor dos mundos?
Por que Cloud Services é o melhor dos mundos?
 
O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)
 
A Nova Web
A Nova WebA Nova Web
A Nova Web
 
Windows Azure: computação em nuvem no melhor estilo self-service
Windows Azure: computação em nuvem no melhor estilo self-serviceWindows Azure: computação em nuvem no melhor estilo self-service
Windows Azure: computação em nuvem no melhor estilo self-service
 
SSI 2012 - Computação em Nuvem
SSI 2012 - Computação em NuvemSSI 2012 - Computação em Nuvem
SSI 2012 - Computação em Nuvem
 
Desenvolvimento de aplicações para Windows Azure
Desenvolvimento de aplicações para Windows AzureDesenvolvimento de aplicações para Windows Azure
Desenvolvimento de aplicações para Windows Azure
 
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
 
Web Dev Camp
Web Dev CampWeb Dev Camp
Web Dev Camp
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
Interop Day 2011 - Construindo aplicações web com WebMatrix
Interop Day 2011 - Construindo aplicações web com WebMatrixInterop Day 2011 - Construindo aplicações web com WebMatrix
Interop Day 2011 - Construindo aplicações web com WebMatrix
 
QS24 - REST e SOAP com Razor e WebMatrix
QS24 - REST e SOAP com Razor e WebMatrixQS24 - REST e SOAP com Razor e WebMatrix
QS24 - REST e SOAP com Razor e WebMatrix
 
Conhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCConhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVC
 
Web em grande estilo com CSS 3
Web em grande estilo com CSS 3Web em grande estilo com CSS 3
Web em grande estilo com CSS 3
 

Projetando aplicações para a nuvem

  • 3. Cloud computing Modelo distribuído de infraestrutura computacional que disponibiliza serviços de alto nível para hospedagem de aplicações, acessíveis através da internet.
  • 4. Alguns serviços nativamente distribuídos no Azure
  • 5. Alguns serviços nativamente distribuídos no Azure Service Fabric Linux Windows
  • 6. Alguns serviços nativamente distribuídos no Azure Azure Container Service
  • 7. Outros serviços distribuídos • Azure SQL Databases • Cosmos DB • Azure Service Bus • Azure Redis Cache • Azure Functions • Dentre tantos outros
  • 8. But… … se a nuvem é uma estrutura de recursos distribuídos, por que se insiste em levar aplicações que não funcionam de maneira distribuída pra lá?
  • 11. Sobre distribuição de aplicações
  • 12. Aplicações distribuídas Uma aplicação distribuída é um software que é executado sobre diversos computadores ligados por uma rede. As partes desta aplicação interagem entre si através de algum padrão.
  • 13. Por que distribuir é importante? Escalabilidade e performance Aplicações não distribuídas somente podem ser escaladas de maneira ineficiente. Ou se faz “scale up” (aumenta o tamanho da VM), ou se faz ”scale out” de serviços que não necessariamente precisariam ser escalados. Aplicações distribuídas podem ser facilmente e eficientemente escaladas, entregando também, performance. Alta disponibilidade Ao se distribuir uma aplicação corretamente, a possibilidade de outage é reduzida em larga escala, uma vez que os serviços são todos replicados e escalados de maneira independente. Aplicações não distribuídas, em geral, possuem grandes taxas de outages. Economia Uma vez que os recursos são distribuídos de maneira descentalizada e portanto, mais focados nas regras de negócios específicas que eles precisa resolver, eles podes ser escalados de maneira eficiente e rodar em tiers mais baratos. Isso implicará, necessariamente, em economia. Crecimento controlado Arquiteturas distribuídas proporcionam um controle mais efetivo do crescimento da infraestrutura, já que é possível crescer partes individuais de acordo com a demanda.
  • 16. Aplicação projetada para ser distribuída (Arda) Dashboard web Power BI Others Permissions / Security Internet Kanban Intelligence Crowler ReportsAuthentication / Users
  • 17. Aplicação projetada para ser distribuída (Arda) Arda  Azure Active Directory  Azure App Services  Web App  API App  Azure SQL Database  Azure Redis Cache  Azure Storage (blob)  SendGrid (free tier)
  • 19. Nem tudo são flores… Muitos componentes Como é possível imaginar, distribuir aplicações significa necessariamente aumentar a quantidade de componentes do ambiente. E claro, componentes são sempre pontos de monitoramento e talvez, falha. Segurança Geralmente as partes de uma aplicação são estruturadas através de APIs. É preciso claro, possuir uma estratégia bem definida de segurança para proteger todos os aspectos da aplicação. Complexidade Com o aumento considerável de componentes na arquitetura, é claro que aumenta em igual proporção a complexidade do mesmo. Rede Ambientes distribuídos são amplamente dependentes da rede que os liga. Instabilidades na comunicação poderão comprometer a performance e funcionamento do ambiente. Latência na comunicação entre os serviços é outro aspecto relacionado às redes. Microserviços Microservices são estruturas natualmente distribuídas e naturalmente surgem como opção para novos projetos. Entretanto, é possível distribuir aplicações monolíticas com com serviços maiores.
  • 20. Serviços úteis na distribuição de apps no Azure
  • 22. Considerações sobre escalabilidade no Azure Functions Auto-gerenciado Web App Escala automática ou manual Escala por tier Escala por SKU (scale up) Escala por número de instâncias (scale out) Escala baseada em condições com definição de regras Application Gateway Manualmente escalável Escala por tier Escala por SKU Escala por número de instâncias (scale out) VM Scale Sets Escala automática ou manual Escala por tier Escala por SKU (scale up) Escala por número de instâncias (scale out) Escala por métricas de processamento/memória Service Bus Auto-gerenciado Storage Auto-gerenciado Redis Escala por tier
  • 24. Considerações sobre escalabilidade no Azure Containers De maneira geral, escala feita por algum orquestrador (Kubernetes, Swarm, etc) Processo de escala mais complexo Com Kubernetes é feito via Jobs -> Pods -> Containers Pode ser realizado sobre ACS ou máquinas virtuais convencionais Baseado em fila? Recursos do host? Recursos do container?
  • 27. Considerações sobre serverless Serverless traz a ideia de terceirização de processamento. A ideia é que seja possível terceirizar rotinas de uma aplicação para que elas sejam executadas apenas sob demanda, sem saber ”quem” executará as mesmas. Algumas vantagens são: - Redução de custos - Altamente escalável - Desacoplamento - DevOps simplificado - Segurança - Multi linguagens Uma ótima maneira de distribuir aplicações 
  • 30. Recomendações finais Load balacing O monitoramento de probe é crítico para um bom comportamento Existem diferentes tipos de balanceanto de carga no Azure. Estude e escolha o melhor para seu cenário Sempre que possível, utilize Application Gateway para balancing Se a aplicação for stateful Existe a possibilidade de ser ajustada para ser stateless? Se não, atente para o uso correto de “stick sessions” (source IP ou cookies) Lembre que o uso de “stick sessions” impacta negativamente na performance do LB Opte, sempre que possível, por cache para persistir informações Localização dos recursos Opte, sempre que possível, por colocar recursos em uma mesma região Recomenda-se sempre ter um ambiente redundante com Traffic Manager na frente Recursos PaaS em uma mesma região, comunicam-se na rede local do DC. Baixíssima latência Máquinas Virtuais Procure utilizar sempre discos gerenciados Se utilizar storages convencionais, evite colocar múltiplas VMs no mesmo storage (IOPS) App Gateways gerenciam VMs em outras redes, entretanto, há perca de performance
  • 32. Links para estudo Azure Cloud Design Patterns https://docs.microsoft.com/en-us/azure/architecture/patterns/ Azure Architecture Center https://docs.microsoft.com/en-us/azure/architecture/ Technical Case Studies https://microsoft.github.io/techcasestudies/ Rock in Rio: https://microsoft.github.io/techcasestudies/devops/2017/05/23/rock-in-rio.html