Baixe o app para aproveitar ainda mais
Prévia do material em texto
05 Aplicação em Nuvem Introdução Prof. Anderson Dutra Moura Opções de Tecnologia Escolhendo o Serviço de Computação •O termo computação refere-se ao modelo de hospedagem para os recursos de computação em que seu aplicativo é executado. •Se o aplicativo tem várias cargas de trabalho, avalie cada carga de trabalho separadamente. Uma solução completa pode incorporar dois ou mais serviços de computação. Modelos de Hospedagem •Os serviços de nuvem geralmente se enquadram em três categorias: IaaS, PaaS ou FaaS. • Funções como serviço (FaaS) vão além na remoção da necessidade de se preocupar sobre o ambiente de hospedagem. Em um modelo FaaS, você simplesmente implanta seu código e o serviço o executa automaticamente. Modelos de Hospedagem •Em geral, há uma compensação entre o controle e a facilidade de gerenciamento. •A IaaS oferece o máximo de controle, flexibilidade e portabilidade, mas você precisa provisionar, configurar e gerenciar as VMs e os componentes de rede que você cria. •Os serviços FaaSs gerenciam automaticamente quase todos os aspectos da execução de um aplicativo. •Os serviços de PaaS estão em algum lugar entre eles. Recursos Básicos •Serviço de aplicativo. Um serviço gerenciado para hospedar aplicativos Web, back-ends de aplicativo móvel, APIs RESTful ou processos de negócios automatizados. •Contêineres. Um serviço gerenciado kubernetes para executar aplicativos em contêineres. •Lote. Um serviço gerenciado para executar aplicativos paralelos de grande escala e de HPC (computação de alto desempenho) •Funções. Um serviço FaaS gerenciado. •Máquinas virtuais. Implante e gerencie VMs. Pontos a Serem Observados •Execute uma avaliação mais detalhada examinando os seguintes aspectos do serviço: • Limites de serviço – verifique os limites por região ou assinatura; •Custo – utilize a calculadora para simulação; • SLA (Service Level Agreement) – verifique os prazos de atendimento referentes à sua assinatura; •Disponibilidade regional – verifique os possíveis locais de hospedagem; •Tabelas de comparação de computação – compare os recursos disponíveis. Modelos de Armazenamento de Dados •Os sistemas de negócios modernos gerenciam volumes cada vez maiores de dados heterogêneos. Essa heterogeneidade significa que um armazenamento de dados único geralmente não é a melhor abordagem. •Em vez disso, geralmente é melhor armazenar tipos diferentes de dados em armazenamentos de dados diferentes, cada um concentrado em direção a uma carga de trabalho ou padrão de uso específico. Sistemas de Gerenciamento de Banco de Dados Relacional •Os bancos de dados relacionais organizam dados como uma série de tabelas bidimensionais com linhas e colunas. •A maioria dos fornecedores fornece um dialeto da linguagem SQL (Structured Query Language) para recuperar e gerenciar dados. •Um RDBMS (Relational Database Management System) tipicamente implementa um mecanismo consistente de forma transacional que está em conformidade com o modelo ACID (Atômico, Consistente, Isolado, Durável) para atualizar informações. Sistemas de Gerenciamento de Banco de Dados Relacional •Esse modelo é muito útil quando garantias de consistência fortes são importantes — onde todas as alterações são atômicas, e as transações sempre deixam os dados em um estado consistente. •No entanto, um RDBMS geralmente não pode ser dimensionado horizontalmente sem fragmentar os dados de alguma maneira. •Além disso, os dados em um RDBMS devem ser normalizados, o que não é apropriado para todos os conjuntos de dados. •Exemplos •Gerenciamento de estoque, Gerenciamento de pedidos, Banco de dados de relatórios, Contabilidade, etc. Armazenamentos de Chave/Valor •Um repositório de chave/valor associa cada valor de dados a uma chave exclusiva. •A maioria dos armazenamentos de chave/valor fornecem suporte apenas às operações de exclusão, inserção e consulta simples. •Na maioria das implementações, a leitura ou gravação de um único valor é uma operação atômica. Armazenamentos de Chave/Valor FONTE: Microsoft AZURE Armazenamentos de Chave/Valor •Os repositórios de chave/valor são altamente otimizados para aplicativos que executam pesquisas simples, mas são menos adequados se você precisar consultar dados entre diferentes repositórios de chave/valor. Os repositórios de chave/valor também não são otimizados para consulta por valor. •Um armazenamento de chave/valor pode ser extremamente escalável, pois o armazenamento de dados pode facilmente distribuir dados em vários nós em computadores separados. •Exemplos •Gerenciamento da sessão, Gerenciamento de perfil, Recomendação de produtos e veiculação de anúncios, etc. Banco de Dados de Documentos •Um banco de dados de documentos armazena uma coleção de documentos, onde cada documento consiste em campos e dados nomeados. •Os dados podem ser valores simples ou elementos complexos, como listas e coleções filho. Os documentos são recuperados por chaves exclusivas. Banco de Dados de Documentos FONTE: Microsoft AZURE Banco de Dados de Documentos •Normalmente, um documento contém os dados para uma única entidade, como um cliente ou um pedido. •Um documento pode conter informações que seriam distribuídas por várias tabelas relacionais em um RDBMS. •Os documentos não precisam ter a mesma estrutura. •Os aplicativos podem armazenar dados diferentes em documentos quando os requisitos empresariais mudam. •Exemplos • Catálogo de produtos, Gerenciamento de conteúdo, Gerenciamento de estoque, etc. Banco de Dados de Grafo •Um banco de dados de grafo armazena dois tipos de informações, nós e bordas. •As bordas especificam as relações entre os nós. •Os nós e as bordas podem ter propriedades que fornecem informações sobre esse nó ou borda, semelhante às colunas em uma tabela. •As bordas também podem ter uma direção, indicando a natureza do relacionamento. Banco de Dados de Grafo FONTE: Microsoft AZURE Banco de Dados de Grafo •Os bancos de dados de grafo podem executar consultas com eficiência na rede de nós e bordas e analisar as relações entre entidades. •Exemplos •Quadros da organização, Gráficos sociais, Detecção de fraude, Mecanismos de recomendação, etc. Análise de Dados •Os armazenamentos de análise de dados fornecem soluções massivamente paralelas para ingerir, armazenar e analisar dados. •Os dados são distribuídos em vários servidores para maximizar a escalabilidade. •Exemplos •Data warehouse empresarial. Banco de Dados de Família de Coluna •Um banco de dados de família de coluna organiza dados em linhas e colunas. •Na sua forma mais simples, um banco de dados de família de coluna pode parecer muito semelhante a um banco de dados relacional, pelo menos conceitualmente. •O poder real de uma base de dados de família de coluna reside na sua abordagem desnormalizada para estruturar dados esparsos. Banco de Dados de Família de Coluna •É possível pensar em um banco de dados de família de coluna como dados de tabela com linhas e colunas, mas as colunas são divididas em grupos conhecidos como famílias de coluna. •Cada família de coluna contém um conjunto de colunas que estão logicamente relacionadas, e geralmente são recuperadas ou manipuladas como uma unidade. Banco de Dados de Família de Coluna FONTE: Microsoft AZURE Banco de Dados de Família de Coluna •Outros dados acessados separadamente podem ser armazenados em famílias de colunas separadas. •Dentro de uma família de colunas, novas colunas podem ser adicionadas dinamicamente e as linhas podem ser esparsas (ou seja, uma linha não precisa ter um valor para cada coluna). •Exemplos •Recomendações, Personalização, Dados de sensor, Telemetria, Mensagens, Análise de mídia social, Análise da Web, Monitorando de atividades, Previsão do tempo e outros dados de série temporal, etc. Banco de Dados de Mecanismo de Pesquisa •Um banco de dados do mecanismo de pesquisa permite que os aplicativos pesquisem informaçõesmantidas em armazenamentos de dados externos. •Um banco de dados do mecanismo de pesquisa pode indexar volumes maciços e fornecer acesso quase em tempo real a esses índices. Banco de Dados de Mecanismo de Pesquisa •Os índices podem ser multidimensionais e fornecerem suporte para buscas de texto livre em grandes volumes de dados de texto. •A pesquisa pode ser exata ou difusa. •Uma pesquisa difusa localiza documentos que correspondem um conjunto de termos e calcula a forma como eles correspondem. •Exemplos •Catálogos de produtos, Pesquisa de site, Registrando em log, etc. Banco de Dados de Séries Temporais •Os dados de série temporal são um conjunto de valores organizados por tempo. •Os bancos de dados de série temporal normalmente coletam grandes quantidades de data em tempo real de um grande número de fontes. •As atualizações são raras e as exclusões geralmente são feitas como operações em massa. •Exemplos •Monitoramento e telemetria de evento, Sensor ou outros dados de IoT, etc. Armazenamento de Objetos •O repositório de objetos é otimizado para armazenar e recuperar grandes objetos binários (imagens, arquivos, fluxos de áudio e vídeo, grandes documentos e objetos de dados de aplicativos, imagens de disco de máquina virtual). •Os repositórios de objetos podem gerenciar quantidades muito grandes de dados não estruturados. •Exemplos • Imagens, vídeos, documentos do office e PDFs; HTML estático, JSON, CSS; Arquivos de log e auditoria; Backups de banco de dados; etc. Arquivos Compartilhados •Algumas vezes, o uso de arquivos simples pode ser o meio mais eficaz para armazenar e recuperar informações. •O compartilhamento de dados pode permitir aos serviços distribuídos o acesso de dados altamente escalonável para executar operações básicas de baixo nível, como solicitações de leitura e gravação simples. •Exemplos •Arquivos herdados; O conteúdo compartilhado pode ser acessado por certo número de VMs ou instâncias de aplicativo; etc. Modelos de Balanceamento de Carga •Os serviços de balanceamento de carga global distribuem o tráfego entre back-ends regionais, nuvens ou serviços locais híbridos. Esses serviços roteiam o tráfego do usuário final para o back-end disponível mais próximo. Eles também reagem a alterações na confiabilidade ou no desempenho do serviço, a fim de maximizar a disponibilidade e o desempenho. •Os serviços de balanceamento de carga regionais distribuem o tráfego em redes virtuais entre máquinas virtuais (VMS) ou pontos de extremidade de serviço com redundância em uma região. Modelos de Balanceamento de Carga •Ao selecionar as opções de balanceamento de carga, aqui estão alguns fatores a serem considerados: •Tipo de tráfego. É um aplicativo Web (HTTP/HTTPS)? Ele é voltado para o público ou para um aplicativo privado? •Global X regional. Você precisa balancear a carga de VMs ou contêineres em uma rede virtual, ou a unidade de escala/implantações de balanceamento de carga entre regiões ou ambas? •Disponibilidade. Qual a SLA do serviço? •Custo. Além do custo do serviço em si, leve em consideração o custo de operações para gerenciá-la. •Recursos e limites. Quais os limites da sua região/assinatura? Modelos de Mensagem •As mensagens podem ser classificadas em duas categorias principais. • Se o produtor espera uma ação do consumidor, essa mensagem é um comando. • Se a mensagem informar ao consumidor que uma ação foi realizada, a mensagem será um evento. Comandos •O produtor envia um comando com a intenção de que os consumidores executarão uma operação dentro do escopo de uma transação de negócios. •Um comando é uma mensagem de alto valor e deve ser entregue pelo menos uma vez. Se um comando for perdido, toda a transação comercial poderá falhar. •Além disso, um comando não deve ser processado mais de uma vez. Isso pode causar uma transação errada. Um cliente pode obter pedidos duplicados ou ser cobrado duas vezes. Eventos •Um evento é um tipo de mensagem que um produtor gera para anunciar fatos. •O produtor (Publicador) não tem expectativas de que os eventos resultarão em qualquer ação. •Os consumidores interessados, podem assinar, ouvir eventos e executar ações dependendo do cenário de consumo. Os eventos podem ter vários assinantes ou nenhum assinante. •O produtor e o consumidor são livremente acoplados e gerenciados de forma independente. Eventos •Há duas categorias de eventos: •O produtor gera eventos para anunciar fatos discretos. Um caso de uso comum é a notificação de eventos. Por exemplo, a provedor de Cloud Computing gera eventos quando cria, modifica ou exclui recursos. Um assinante desses eventos pode ser um aplicativo lógico que envia e-mails de alerta. •O produtor gera eventos relacionados em uma sequência ou um fluxo de eventos, em um período de tempo. Normalmente, um fluxo é consumido para avaliação estatística. A avaliação pode ser feita em uma janela temporal ou quando os eventos chegam. A telemetria é um caso de uso comum, por exemplo, integridade e monitoramento de carga de um sistema. Outro caso é o streaming de eventos de dispositivos IoT. Padrão Produtor-Consumidor FONTE: Microsoft AZURE Conclusão •Resumindo, para definir a tecnologia necessária para a sua aplicação na nuvem, você precisa definir: •O(s) serviço(s) de computação a ser(em) utilizado(s); •O(s) armazenamento(s) de dados; •O serviço de balanceamento de carga; •O serviço de mensagem. REFERÊNCIAS MICROSOFT AZURE. Entender os modelos de armazenamento de dados. Disponível em: <https://docs.microsoft.com/pt-br/azure/architecture/guide/technology-choices/data-store -overview>. Acesso em: 07 de out. de 2020. MICROSOFT AZURE. Escolha um serviço de computação do Azure para seu aplicativo. Disponível em: < https://docs.microsoft.com/pt-br/azure/architecture/guide/technology-choices/compute-d ecision-tree>. Acesso em: 07 de out. de 2020. MICROSOFT AZURE. Opções de mensagens assíncronas no Azure. Disponível em: <https://docs.microsoft.com/pt-br/azure/architecture/guide/technology-choices/messagin g>. Acesso em: 07 de out. de 2020. MICROSOFT AZURE. Visão geral das opções de balanceamento de carga no Azure. Disponível em: <https://docs.microsoft.com/pt-br/azure/architecture/guide/technology-choices/load-bala ncing-overview>. Acesso em: 07 de out. de 2020. Bons Estudos!
Compartilhar