cloud computing - pratices & patterns
TRANSCRIPT
Cloud Computingpatterns & 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.