Alguns Conceitos Sobre Arquitetura Cloud Services, Micro Serviços, Containers, Openstack e Kubernete

No universo da computação em Nuvem há inúmeros conceitos, contudo, separei alguns que por estarem relacionados às nossas ofertas, ajudam no seu maior entendimento:



Arquitetura/Aplicação Monolítica


- É uma única aplicação de software num único programa, a partir de uma única plataforma.

- Uma aplicação monolítica é autônoma e independente de outras aplicações. Possui fácil deploy e minimiza duplicidade de código, mas se um módulo falhar (ex memória), cai tudo. Como o código é longo, dificulta a manutenção.



Arquitetura de Micro serviços


- A proposta desta arquitetura é desenvolver sistemas que sejam mais flexíveis, escaláveis e com manutenção mais simples do que as arquiteturas de sistemas monolíticas normalmente utilizadas.

- Permite disponibilizar novos processos ou serviços sem impacto nos processos e serviços existentes, sem a necessidade de parada de todo sistema. Também otimiza o uso da infraestrutura de nuvem.

- Ao contrário da monolítica ela SEPARA as macro-funcionalidades em sub-sistemas, que interagem com um sistema core. Ex: uma loja virtual (core), interage com sistemas de Logística, emissão de NFs, carrinho de compras, etc. Portanto, cada sistema precisa ser mantido e deployado separadamente.





















               Monolítica                                                      Micro serviços





Containers x Virtual Machines


- Um container é um software que é executado em um SO (Windows ou Linux) e que aproveita deste (ou seja, compartilha) códigos, ferramentas, bibliotecas, tudo aquilo que se pode instalar num servidor.

- Com o uso de container, não precisamos de um sistema operacional virtualizado. Assim:

-> Virtualização: Infra (cloud, rede, etc) / SO Host / Hypervisor / 1 Guest SO para cada App

-> Containers: Infra / SO / Containers / Diversas Apps (Não é necessário virtualizar o SO).





- Ele consistente (*) durante todas as etapas (dev/teste/produção), por isso, é possível desenvolver um aplicativo num laptop e portá-lo para teste/produção, ems ambientes corporativos da empresa.

- Ao carregar um contêiner temos uma “imagem” do sistema operacional host, cada contêiner tem seus próprios processos, registro, endereço IP, etc

- O SO do host compartilha com o(s) container(s) o mesmo kernel.

- Contêiners são bem mais leves e rápidos que VMs.


(*) este conceito está associado à característica de Manutenibilidade, que é a capacidade do software ser mantido. Uma modificação consiste, por exemplo, em uma correção do produto ou da adaptação a mudanças de requisitos, como mudanças de legislação. 



Kubernetes


- Lançado em Jun 2014 pela Google, são sistemas de código aberto para gerenciadores dos aplicativos em containers, que rodam em um ou vários clusters.

- Oferecem uma plataforma para automatização de deploy, balanceamento de carga, escalonamento e operação de containers. Ou seja, seu grande objetivo é facilitar a implantação de aplicativos na perspectiva dos microsserviços, através da automação e orquestração dos aplicativos em containers.



Beanstalk


- Criado pela Wildbit é um workflow completo para escrever, revisar e deployar código, portanto, o desenvolvedor não precisa se preocupar com o hosting e deployment do código.

- Na AWS é oferecido como Elastic Beanstalk: “Basta fazer o upload de seu aplicativo e o Elastic Beanstalk automaticamente gerencia os detalhes de fornecimento de capacidade, balanceamento de carga, escalabilidade e monitoramento do status do aplicativo. O Elastic Beanstalk usa serviços altamente escaláveis e confiáveis que estão disponíveis no Nível gratuito da AWS. O Elastic Beanstalk é compatível com aplicativos desenvolvidos em Java, PHP, .NET, Node.js, Python e Ruby, e com diferentes tipos de contêiner de cada linguagem”.



Docker


- Lançado em 2008, com tecnologia open source, é atualmente o projeto e o método mais famoso para implantar e gerenciar containers Linux.

Atualmente, a Red Hat e o Docker, além de muitas outras organizações, são membros da Open Container Initiative (OCI), cujo objetivo é padronizar as tecnologias de containers no setor open source.



Statefull x Stateless


- Statefull (tem estado); Stateless (não tem estado). Ter estado significa uma ligação direta entre o cliente e o servidor por um determinado tempo (exemplo de Estado: logado, não logado, faturando, comprando, etc).

- No statefull, tem-se o controle de estado. Possui a mesma instância nas diferentes requisições do mesmo cliente (é armazenado na sessão do usuário), portanto, a aplicaçåo possui alto vínculo com a máquina. Por esta razão, não são candidatas naturais a rodar com instancias spot.

- No stateless, perde-se o estado entre as requisições, ou seja, em cada requisição é uma instância nova do bean. Nada garante que em uma próxima requisição ainda existirão os mesmos dados anteriores. Essas aplicações guardam uma relação muito direta com a configuração da máquina, portanto, o risco de descontinuidade é alto se a instância se perder (ex banco de dados em geral).

- Há banco de dados, como o Apache Cassandra e o MongoDB (No SQL) que conseguem fazer réplicas do servidor principal em vários nós, o que garante maior tolerância a falhas. São considerados statefull avançados, portanto, passíveis de rodar em instâncias spot.



Elasticidade


- Conceito relativo a crescer ou decrescer um ambiente computacional (CPU, memória, disco, etc) a partir de limites pré-definidos. Por exemplo, caso a CPU atinja x% de utilização, acrescenta-se (ou reduz-se) máquinas (escalabilidade horizontal).

- Num ambiente corporativo tradicional, a escalabilidade mais comum e conhecida é a vertical, ou seja, quando adiciona-se mais recursos (CPU, memória, etc).

- Na escalabilidade horizontal, usamos mais do mesmo, ou seja, acrescenta-se máquinas ao sistema.



OpenStack


- É um software de código aberto, capaz de gerenciar os componentes de múltiplas infraestruturas virtualizadas. Assim como o sistema operacional gerencia os componentes de nossos computadores, o OpenStack é chamado de Sistema Operacional da Nuvem.

- É considerado uma plataforma de software pois fornece APIs que, em conjunto, são capazes de controlar todos os recursos disponíveis na oferta dessa infraestrutura: máquinas virtuais, rede, armazenadores e balanceadores de carga.

- A Rackspace (provedor de infraestrutura americano) e a NASA (agência espacial americana) foram os principais contribuidores iniciais para o projeto. A Rackspace forneceu sua plataforma "Cloud Files" para implementar o aspecto de armazenamento (Object Storage) do OpenStack, enquanto que a NASA entrou com o "Nebula" para implementar o lado computacional (Compute)

- O consórcio OpenStack, desde então, agregou mais de 100 membros em menos de um ano, incluindo a Canonical (responsável pelo Ubuntu), Dell, Citrix, Red Hat, IBM, Cisco, HP, SUSE, VMware, Yahoo, etc

- O OpenStack apresenta seus serviços através de APIs compatíveis com os serviços EC2 e S3 da Amazon AWS e, portanto, aplicações escritas para estes serviços do AWS podem ser usados com OpenStack também.


Posts Recentes
Arquivo
Procurar por tags

All Rights Reserved

  • Preto Ícone LinkedIn
  • Preto Ícone Instagram
  • Preto Ícone Twitter
  • Preto Ícone Facebook
  • Preto Ícone YouTube

155, Helios Seelinger

Barra da Tijuca  -  Rio de Janeiro  -  RJ  -  Brasil

22640-040   |  +55 21 2179-7788

wework 

27, Luis Soares Barbosa, andar 11, 82  -  Braga  -  Portugal

4710-403   |  +351 927 780 165