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