Cloud Computing
patterns & practices
V 1.0
Alan Carlos, Cloud Specialist
RESILIÊNCIACAPACIDADE DE VOLTAR AO SEU
ESTADO NATURAL, APÓS
ALGUMA SITUAÇÃO CRÍTICA E
FORA DO
COMUM
 Implante várias instâncias de serviços e recursos da sua aplicação,
evitando-se pontos de falhas únicos.
 Arquitete seu aplicativo para que ele possua o mínimo de dependências
possíveis (de aplicações ou plataformas terceiras) e que as mesmas sejam
bem definidas.
 Module seu aplicativo em features conforme a criticidade e nível de
serviço, oportunizando o reestabelecimento do funcionamento de seu
aplicativo pelo time de Operações, apenas do que é mais critico.
Patterns & practices
Disponibilidade
 Repita operações de forma consistente, quando um recurso apresentar
uma falha momentânea.
 Decomponha sua aplicação em bancos de dados diferentes, como
configuração, processamento e armazenamento, utilizando-se de tabelas
separadas também, com o mínimo possível de relacionamento,
oportunizando um backup consistente, com planos diferenciados e
garantia de DR efetiva.
Patterns & practices
Disponibilidade
 Utilize agentes de mensagens com semântica (N + 1) gerando alta
disponibilidade no processamento de dados críticos, evitando-se perdas.
Por exemplo: serviços de barramento de mensagens.
 Projete seu aplicativo para trabalhar com enfileiramento de mensagens,
novas tentativas, momentos de picos, paralelismo de processamento,
“auto degradação”, processamento lento, conseguindo gerar retornos de
mensagens entre si e integrações com outros aplicativos para que ele
possa estar preparado para ambientes elásticos, ou seja, que aumentam
seus recursos conforme a necessidade de mais processamento ou
quando há picos.
Patterns & practices
Disponibilidade
 Sempre que possível, utilize técnicas de aplicação de updates e correções
de sua aplicação sem a necessidade do reinicio de instâncias, serviços ou
sistemas operacionais.
 Considere o estudo da plataforma em que seu aplicativo irá trabalhar,
inclusive as opções atuais de DR (Disaster Recovery) e HA (High
Available), custos para implantação e realidades de uso para o seu
negócio, trazendo para seu aplicativo a capacidade de recuperação sem
necessidades de FCI (Failover Cluster Instances), NBL (Network Load
Balancing), ou similar.
Patterns & practices
Disponibilidade
 Divida a carga de trabalho de sua aplicação em serviços, threads,
executores, tarefas, pensando em distribuição de carga entre ambientes,
como sistemas operacionais distintos
 Projete seu aplicativo para trabalhar com o redimensionamento de
recursos, como o aumento de processos dentro de um Web Farm,
aumento de paralelismo de processamento de um banco de dados, bem
como a redução dos mesmos.
 Arquitete sua aplicação para responder a definições de unidades de
escala a serem usadas para definir o uso de recursos.
Patterns & practices
Escalabilidade
 Sempre que possível, evite a afinidade de cliente, dando a opção das
operações serem roteadas para qualquer instância.
 Projete sua aplicação para trabalhar com prioridades e tarefas em
segundo plano. Evite que tarefas menos importantes, consumam os
recursos de E/S e CPU de tarefas essenciais para um funcionamento
adequado de sua aplicação.
 Considere o estudo da prática “Nada Compartilhado”. Por exemplo, evitar
o uso do estado de sessão do servidor, afinidade de cliente e
particionamento de dados são bons exemplos.
Patterns & practices
Escalabilidade
 Projete sua aplicação para trabalhar com retenção de dados a longo
prazo, operando-os em locais distintos ao de processamento e consultas
mais atuais. Assim, além de dar condições de um processamento mais
eficiente de sua aplicação, oportunizará a guarda dos dados antigos em
locais de retenção a longo prazo e baixo consumo, tornando seu
aplicativo com um custo mais atrativo para armazenamento em nuvem e
onpremise no cliente.
 Minimize o volume de dados recuperados, especificando colunas e
critérios bem definidos de consulta. Busque boas práticas de consultas
para não impactar no aprendizado de sistemas como SGBD.
Patterns & practices
Escalabilidade
 Use caching sempre que possível para reduzir o custo de carga de
serviços e recursos.
 Otimize e ajuste consultas e índices SQL. Algumas instruções ou
construções T-SQL podem ter um impacto no desempenho que pode ser
reduzido otimizando-se o código em um procedimento armazenado. Por
exemplo, evite a conversão de tipos datetime em varchar antes de
comparar com um valor literal datetime.
 Considere seu aplicativo assumir em gerenciar a integridade referencial
de dados tornando a organização mais assertiva e confiável.
Patterns & practices
Escalabilidade
 Considere usar chamadas assíncronas para acessar recursos e serviços.
Lembre-se que diversos ambientes podem apresentar latência de
comunicação e afunilamento de recursos.
 “Empodere” o administrador de seu aplicativo no gerenciamento de
escalabilidade dando opções como: compactação de dados em locais de
alta latência e link reduzido, definição de números de threads de
processamento de serviços, tempo de conexão, tempo de espera de
processamento.
 Minimize o uso de conexões e recursos o máximo possível.
Patterns & practices
Escalabilidade
 Evite armazenar estado de sessão no servidor.
 Envie dados em lotes.
 Minimize o uso de conexões e recursos o máximo possível.
 Execute testes de perfil e desempenho constantemente.
 Considere utilizar um sistema de monitoramento para avaliar a
disponibilidade de um recurso, integração com terceiros, serviços,
inclusive disponibilizar esse “farol” ao seu administrador.
Patterns & practices
Escalabilidade
 Sempre que possível, desenvolva sua aplicação com o menos de
dependência possível de uso de usuários administrativos ou de sistema.
 Considere em sua aplicação o uso de configurações via Web App, WMI
ou similar, sem a necessidade de configuração direta na console dos
servidores.
 Considere a implantação de logs de rastreio em ações ou atividades que
possuem um SLA de segurança elevado, como criação de novos logins,
mudanças de perfil de usuários, transações financeiras.
Patterns & practices
Segurança
 Considere usar perfis de usuários e senhas distintas e quando necessário,
com opções de complexidade elevada, dificultando assim, o acesso
indevido.
 Considere utilizar criptografia nas transações e armazenamento de dados
de sua aplicação.
 Considere o uso de portas de acesso TCP/UDP randômicas ou
alternativas aos padrões mundiais (HTTP/80), atendendo assim normas de
clientes e empresas com SLA de segurança elevados.
Patterns & practices
Segurança
Patterns & practices
Guias de Apoio
 Patterns & Practices – Microsoft Azure
 Cloud Controls Matrix – Cloud Security Alliance
 Cloud: IaaS, PaaS e SaaS
Obrigado.

Cloud Computing - Pratices & Patterns

  • 1.
    Cloud Computing patterns &practices V 1.0 Alan Carlos, Cloud Specialist
  • 2.
    RESILIÊNCIACAPACIDADE DE VOLTARAO SEU ESTADO NATURAL, APÓS ALGUMA SITUAÇÃO CRÍTICA E FORA DO COMUM
  • 3.
     Implante váriasinstâncias de serviços e recursos da sua aplicação, evitando-se pontos de falhas únicos.  Arquitete seu aplicativo para que ele possua o mínimo de dependências possíveis (de aplicações ou plataformas terceiras) e que as mesmas sejam bem definidas.  Module seu aplicativo em features conforme a criticidade e nível de serviço, oportunizando o reestabelecimento do funcionamento de seu aplicativo pelo time de Operações, apenas do que é mais critico. Patterns & practices Disponibilidade
  • 4.
     Repita operaçõesde forma consistente, quando um recurso apresentar uma falha momentânea.  Decomponha sua aplicação em bancos de dados diferentes, como configuração, processamento e armazenamento, utilizando-se de tabelas separadas também, com o mínimo possível de relacionamento, oportunizando um backup consistente, com planos diferenciados e garantia de DR efetiva. Patterns & practices Disponibilidade
  • 5.
     Utilize agentesde mensagens com semântica (N + 1) gerando alta disponibilidade no processamento de dados críticos, evitando-se perdas. Por exemplo: serviços de barramento de mensagens.  Projete seu aplicativo para trabalhar com enfileiramento de mensagens, novas tentativas, momentos de picos, paralelismo de processamento, “auto degradação”, processamento lento, conseguindo gerar retornos de mensagens entre si e integrações com outros aplicativos para que ele possa estar preparado para ambientes elásticos, ou seja, que aumentam seus recursos conforme a necessidade de mais processamento ou quando há picos. Patterns & practices Disponibilidade
  • 6.
     Sempre quepossível, utilize técnicas de aplicação de updates e correções de sua aplicação sem a necessidade do reinicio de instâncias, serviços ou sistemas operacionais.  Considere o estudo da plataforma em que seu aplicativo irá trabalhar, inclusive as opções atuais de DR (Disaster Recovery) e HA (High Available), custos para implantação e realidades de uso para o seu negócio, trazendo para seu aplicativo a capacidade de recuperação sem necessidades de FCI (Failover Cluster Instances), NBL (Network Load Balancing), ou similar. Patterns & practices Disponibilidade
  • 7.
     Divida acarga de trabalho de sua aplicação em serviços, threads, executores, tarefas, pensando em distribuição de carga entre ambientes, como sistemas operacionais distintos  Projete seu aplicativo para trabalhar com o redimensionamento de recursos, como o aumento de processos dentro de um Web Farm, aumento de paralelismo de processamento de um banco de dados, bem como a redução dos mesmos.  Arquitete sua aplicação para responder a definições de unidades de escala a serem usadas para definir o uso de recursos. Patterns & practices Escalabilidade
  • 8.
     Sempre quepossível, evite a afinidade de cliente, dando a opção das operações serem roteadas para qualquer instância.  Projete sua aplicação para trabalhar com prioridades e tarefas em segundo plano. Evite que tarefas menos importantes, consumam os recursos de E/S e CPU de tarefas essenciais para um funcionamento adequado de sua aplicação.  Considere o estudo da prática “Nada Compartilhado”. Por exemplo, evitar o uso do estado de sessão do servidor, afinidade de cliente e particionamento de dados são bons exemplos. Patterns & practices Escalabilidade
  • 9.
     Projete suaaplicação para trabalhar com retenção de dados a longo prazo, operando-os em locais distintos ao de processamento e consultas mais atuais. Assim, além de dar condições de um processamento mais eficiente de sua aplicação, oportunizará a guarda dos dados antigos em locais de retenção a longo prazo e baixo consumo, tornando seu aplicativo com um custo mais atrativo para armazenamento em nuvem e onpremise no cliente.  Minimize o volume de dados recuperados, especificando colunas e critérios bem definidos de consulta. Busque boas práticas de consultas para não impactar no aprendizado de sistemas como SGBD. Patterns & practices Escalabilidade
  • 10.
     Use cachingsempre que possível para reduzir o custo de carga de serviços e recursos.  Otimize e ajuste consultas e índices SQL. Algumas instruções ou construções T-SQL podem ter um impacto no desempenho que pode ser reduzido otimizando-se o código em um procedimento armazenado. Por exemplo, evite a conversão de tipos datetime em varchar antes de comparar com um valor literal datetime.  Considere seu aplicativo assumir em gerenciar a integridade referencial de dados tornando a organização mais assertiva e confiável. Patterns & practices Escalabilidade
  • 11.
     Considere usarchamadas assíncronas para acessar recursos e serviços. Lembre-se que diversos ambientes podem apresentar latência de comunicação e afunilamento de recursos.  “Empodere” o administrador de seu aplicativo no gerenciamento de escalabilidade dando opções como: compactação de dados em locais de alta latência e link reduzido, definição de números de threads de processamento de serviços, tempo de conexão, tempo de espera de processamento.  Minimize o uso de conexões e recursos o máximo possível. Patterns & practices Escalabilidade
  • 12.
     Evite armazenarestado de sessão no servidor.  Envie dados em lotes.  Minimize o uso de conexões e recursos o máximo possível.  Execute testes de perfil e desempenho constantemente.  Considere utilizar um sistema de monitoramento para avaliar a disponibilidade de um recurso, integração com terceiros, serviços, inclusive disponibilizar esse “farol” ao seu administrador. Patterns & practices Escalabilidade
  • 13.
     Sempre quepossível, desenvolva sua aplicação com o menos de dependência possível de uso de usuários administrativos ou de sistema.  Considere em sua aplicação o uso de configurações via Web App, WMI ou similar, sem a necessidade de configuração direta na console dos servidores.  Considere a implantação de logs de rastreio em ações ou atividades que possuem um SLA de segurança elevado, como criação de novos logins, mudanças de perfil de usuários, transações financeiras. Patterns & practices Segurança
  • 14.
     Considere usarperfis de usuários e senhas distintas e quando necessário, com opções de complexidade elevada, dificultando assim, o acesso indevido.  Considere utilizar criptografia nas transações e armazenamento de dados de sua aplicação.  Considere o uso de portas de acesso TCP/UDP randômicas ou alternativas aos padrões mundiais (HTTP/80), atendendo assim normas de clientes e empresas com SLA de segurança elevados. Patterns & practices Segurança
  • 15.
    Patterns & practices Guiasde Apoio  Patterns & Practices – Microsoft Azure  Cloud Controls Matrix – Cloud Security Alliance  Cloud: IaaS, PaaS e SaaS
  • 16.