Criando aplicações prontas para nuvem APPI305 Regis Gimenis Arquiteto Microsoft Brasil
Agenda
Evolução da computação 70’s : Monolítico 80’s : Cliente-servidor 90’s : Web 00’s : SOA 10’s : TI como Serviço
Computação em Nuvem Utilização de processamento, memória e armazenamento em servidores compartilhados e acessados remotamente por meio da Internet
Características Virtualização Padronização Resiliência Elasticidade Monitoração Automação
Capacidade X Demanda Modelo Tradicional Alocação de capacidades Previsão de Carga “Falta“ de capacidades CAPACIDADE DA TI “Desperdício“ de capacidades Custo fixo das capacidades Custo Inicial Carga real TEMPO
Capacidade x Demanda Modelo na Nuvem Previsão de Carga Alocação de capacidades Sem “falta“ de capacidades CAPACIDADE DA TI Redução do “excesso de TI“ É possível a redução das capacidades no caso da redução da carga Redução dos investimentos iniciais Carga real Tempo
Padrões de Computação 1 2 4 3 “On / Off “ “Crescimento Rápido“ Uso Computar Time Média Período de Inatividade “On / Off “ Cargas On/Off Desperdício da capacidade provisionada Time to market pode ser retardado Uso Médio Computar Tempo “Crescimento Rápido“ Serviços que precisam cresce e escalar Crescer é um desafio grande na TI Provisionamento de hardware complexo 1 2 Computar Tempo “Carga Imprevista“ Uso Médio Pico de demanda inesperada Desempenho comprometido pelo pico Difícil provisionar nos casos extremos Computar Tempo Uso Médio “Carga Sazonal“ Serviços c/ micro sazonalidades Picos devido a demandas periódicas Complexidade da TI + desperdício 4 3
Modelos de Nuvem IaaS Modelo de Serviços PaaS SaaS Nuvem Privado Público Modelo de Implantação Comunidade Híbrido
Infrastructure Software Platform (On-Premises) Infrastructure (as a Service) Software (as a Service) Platform (as a Service) Applications Applications Você administra Applications Applications Data Você administra Data Data Data Runtime Runtime Runtime Runtime Administrado pelo fornecedor Middleware Middleware Middleware Middleware Você administra Administrado pelo fornecedor Administrado pelo fornecedor O/S O/S O/S O/S Virtualization Virtualization Virtualization Virtualization Servers Servers Servers Servers Storage Storage Storage Storage Networking Networking Networking Networking
Aplicações prontas para nuvem Decomposição funcional Decomposição lógica Topologia (web/worker) Competição por recursos Padrões de Carga -> Unidades de Escala
Decomposição funcional Taxonomia do Windows COMPONENTS: Reutilizável, auto-descrito, unidade de teste, distribuição e serviço FEATURES: Bloco de construção de produto que, em combinação com outras features ou componentes, disponibiliza um conjunto de funcionalidade ROLES: Composição de features que forma uma unidade de gerenciamento (implantação, atualização) WORKLOADS: Composição de papéis relacionados que rodam juntos num servidor ou conjunto de servidores SOLUTION: Um conjunto de workloads integrados que juntos endereçam um problema para um segmento de clientes PRODUCT: Uma solução empacotada como um produto
Decomposição da aplicação
Arquitetura Software Cliente Software Aplicativo Infraestrutura Cliente PC Browser Office Client Gadgets IM Cliente Mobile Speech SMS/IM Embedded Devices Consoles Acesso Programático RSS REST Web Services VoiceXML Apresentação Web Static Dynamic RIA Streaming Aplicação Business Logic (Worker Role) Presentation (Web Role) SMTP SMS SOAP Software Aplicativo Infraestrutura Identity & Access Messaging Storage Workflow Async Queue/Bus Peer to Peer Blob Event Based Worker Based Relational File Authentication Authorization Table Computação Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable Fundações On Premises Hoster Cloud
Padrões de carga 100 usuários 200 usuários inicial Crescimento 2 web roles 1 worker role 512 cache 5 GB storage 100 usuários simultâneos 3.000 ops/ dia 2 web roles 1 worker role 512 cache 5 GB storage 4 web roles 2 worker roles 1 GB cache 10 GB storage 100 usuários inicial 200 usuários Crescimento
Comunicação assíncrona
Padrão de projeto síncrono SQL Azure Web App Front End WA Storage Tables Queues Requisição 1 “Trabalho” 1 Worker Resposta 1 Thread Thread Resposta 1 Bloqueia Requisição 2 AppFabric Cache Esperando…
Padrão de projeto assíncrono SQL Azure Web App Front End WA Storage Tables Queues Requisição 1 “Trabalho” 1 Worker Resposta 1 Resposta 1 Thread Thread AppFabric Cache Requisição 2 “Trabalho” 2 Contexto Resposta 2 Resposta 2
Síncrono versus Assíncrono Projeto síncrono Projeto assíncrono
Síncrono versus Assíncrono
Exemplo padrão assíncrono Usuário sobe arquivo grande de imagem Imagem é inserida num blob storage Mensagem é enviada para fila com BLOB URI e metadados Worker role lê mensagem da fila Worker role processa mensagem, lê imagem do BLOB storage, gera thumbnail Thumbnail e metadados são armazenados numa tabela Mensagem é apagada da fila Web Role Storage Worker Role Web Role Table Worker Role Worker Role Worker Role Blob Container LB Queue LB
Exemplo com falha no Worker Role Envio de mensagem de débido de R$100 da conta Worker role lê a mensagem Saldo da conta é debitado em R$100 Worker role “cai” antes da mensagem ser apagada 3 minutos depois, mensagem reaparece na fila Worker role lê a menagem A mensagem é apagada da fila Caos é instaurado, cliente reclama ao banco… Web Role Worker Role Web Role Worker Role Worker Role Worker Role Saldo = $800 Saldo= $900 Saldo= $1000 Problema de idempotência Storage LB Queue LB
Solução para problema de idempotência Envio de mensagem de débido de R$100 da conta com ID da transação Worker role lê a mensagem e verifica se ID da transação já existe Escreve ID da transação no estado ‘Iniciado’ no ‘Replay Log’ Saldo da conta é debitado em R$100 Worker role “cai” antes da mensagem ser apagada 3 minutos depois, mensagem reaparece na fila Worker role lê a mensagem. Verifica Id da transação existente no estado ‘Iniciado’. Mensagem de compensação é escrita em outra fila Mensagem é apagada da fila. Mensagem de compensação é processada. Saldo = $900 Saldo = $1000 Web Role Worker Role Web Role Storage Worker Role Table Query Query Worker Role Worker Role Queue LB Queue LB
Compatível com Windows Azure Aplicações Projetado para Windows Azure Disponível como Serviço Compatível com Windows Azure
Modelo de programação para Windows Azure Administração Disponibilidade Escalabilidade Aplicação roda sobre um ou mais roles Múltiplas instâncias de cada role Aplicação deve continuar funcionando quando qualquer instância falhar Whitepaper: The Windows Azure Programming Model http://go.microsoft.com/?linkid=9751501
Modelo típico de aplicação Queue Table Web Role Worker Role
Windows Azure Platform Plataforma Windows Azure Windows Azure Platform http://msdn.microsoft.com/en-us/library/dd163896.aspx
Desenvolvimento Visual Studio 2010 Windows Azure SDK AppFabric SDK Ferramentas / emuladores
Gerenciamento de ciclo de vida Moving Application to the Cloud http://msdn.microsoft.com/en-us/library/ff728592.aspx
Empacotamento e configuração Windows Azure Services são descritos por dois importantes artefatos: Service Definition (*.csdef) Service Configuration (*.cscfg) O código é compactado e empacotado juntamente com a definição num *.cspkg Encrypted(Zipped(Code + *.csdef)) == *.cspkg Windows Azure consome apenas (*.cspkg + *.cscfg)
Atualização da aplicação VIP Swap: Ambientes Staging e Production. Permite a troca rápida de ambientes. Production: v1 Staging: v2, após a troca Production: v2 Staging: v1. In-Place Upgrade Executa uma atualização sem interrupção no serviço. Todo serviço ou apenas um Role Manual ou Automático
Monitoramento Instrumente sua aplicação usando Trace, Debug DiagnosticMonitorTraceListener Use Diagnostics API para configurar e coletar Logs de eventos Contadores de performance Informação de Trace e Debug Logs do IIS Crash Dumps Monitore os SLA pela combinação dos SLA’s de aplicação e plataforma. Lembre-se monitoramento e diagnóstico não são livres de cobrança: espaço de armazenamento, transferência,
Armazenamento Local Windows Azure Storage Windows Azure Drives Blob Queue Tables Windows Azure Drives SQL Azure
Armazenamento local Instâncias Role tem espaço em disco disponível Utilizar elemento LocalStorage na definição de serviço Name CleanOnRoleRecycle Size Persistente porém sem duração garantida Bom para recursos cacheados Windows Azure Storage Drives fornece um armazenamento durável garantido
Windows Azure Storage Armazenamento na Nuvem Escalável, durável e disponível Em qualquer lugar em qualquer hora Pague somente pelo uso Exposto via RESTful Web Services Vários tipos de abstração: Tables, Blobs, Queues, Drives
SQL Azure Banco de dados Relatórios Sincronização de dados
Conectividade Windows Azure Connect Windows Azure Traffic Manager Windows Azure AppFabric Service Bus
Windows Azure Connect Overview of Windows Azure Connect http://msdn.microsoft.com/en-us/library/gg432997.aspx
Windows Azure Traffic Manager Windows Azure Traffic Manager Help
Performance Content Delivery Network (CDN) AppFabric Caching
Content Delivery Network (CDN) Melhorar desempenho e experiência do usuário Escala para aumento de tráfego e carga da aplicação.
Windows Azure AppFabric Service Bus AppFabric Caching AppFabric Access Control
AppFabric: Modelo de Composição TechReady12 4/12/2017 AppFabric: Modelo de Composição Applications AppFabric Developer Tools Workflows Web Services Custom Code Access Control Caching Service Bus Integration Composition Model AppFabric App Manager Web Tier Data Tier AppFabric Services Windows Server Windows Azure AppFabric Container SQL Server SQL Azure Server Cloud © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
AppFabric Service Bus
AppFabric Service Bus Fornece serviço de mensagens seguro e conectividade através de diferentes topologias de rede. Permite a construção de aplicações híbridas que estendem entre cloud e on-premises. Permite diferentes protocolos e padrões de comunicação para construir mensageria confiável
Exchange messages between loosely coupled, composite applications. AppFabric Service Bus Text XML Graphics Binary Data Streaming Receive Receive Firewall Send Send Exchange messages between loosely coupled, composite applications. Direct Connection facilitated by Service Bus if that is best connection mechanism. Application #1 Application #2
AppFabric Caching
AppFabric Caching Cache de aplicações em memória, distribuído, para aplicações Windows Azure Usos: Session State para aplicações Windows Azure Camada de cache para aplicações Windows Azure com armazenamento em SQL Azure ou Windows Azure Storage Fornecido como serviço Provisionar, configurar e utilizar Sem instalação ou gerenciamento de máquinas ou instâncias Aumento ou redução de tamanho conforme necessidade Mesmo modelo de programação para cloud e on-premises Segurança via Access Control Faz cache de qualquer objeto .NET
Windows Azure AppFabric Caching 4/12/2017 11:51 PM Windows Azure AppFabric Caching demo © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Access Control
AppFabric Access Control Service Simplifica e automatiza requisições de autorização Abstração para autenticação baseada em claims Relacionamento seguro Aplicações e dados Aplicações ou usuários
Windows Azure AppFabric Access Control Service 4/12/2017 11:51 PM Windows Azure AppFabric Access Control Service demo © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Palestras Relacionadas Tech Ed North America 2010 4/12/2017 11:51 PM Palestras Relacionadas APPI 301 Arquitetura de Referência na Plataforma Microsoft e Windows Azure COS301 Como utilizar o Windows Azure Storage nas suas aplicações COS302 Nuvens híbridas: Conectando aplicações locais com a nuvem na plataforma Windows Azure COS304 Novidades do Windows Azure AppFabric COS305 Migrando uma aplicação para Windows Azure © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Recursos para Desenvolvedores Tech Ed North America 2010 4/12/2017 11:51 PM Recursos Recursos para IT Pros http://technet.microsoft.com/pt-br Recursos para Desenvolvedores http://msdn.microsoft.com/pt-br © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Não esqueça de preencher sua avaliação online Tech Ed North America 2010 4/12/2017 11:51 PM Não esqueça de preencher sua avaliação online www.teched.com.br/avaliacao © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
4/12/2017 11:51 PM © 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.