terça-feira, 14 de maio de 2024

Microsserviços - Montando um laboratório - Parte I - Preparando o ambiente


Olá pessoal, tudo bem?

No último post eu falei um pouco sobre microsserviços, como é a ideia da estrutura por trás do uso deles e com alguns exemplos de arquitetura.

Bem, agora eu vou mostrar como eu montei um lab para estudar um pouco mais a ideia, mas deixando bem claro que não sou desenvolvedor então, eu usei alguns códigos prontos numa estrutura web mesmo com PHP, HTML e banco de dados MySql.
Existe toda uma estrutura para se estudar sobre como criar microsserviços, tecnologias que podem ser utilizadas para atender melhor esse propósito, ok?

A ideia mesmo foi mostrar de forma "simples" um jeito de você pensar em microsserviços e ver como eles podem funcionar juntos e ao mesmo quando um parar vc não compromete o sistema toda, uma vez que existe um ponto de junção para usar todos eles, podemos ter alguns com falha que parte do serviço continua. E isso é o legal.

Para o Lab, vamos usar:
  • VirtualBox
  • VM com Ubuntu Server
  • Docker
  • Images mysql:5.7 e webdevops/php-nginx
Aqui está o desenho de arquitetura proposto de como irá funcionar a solução:

Resumo/objetivo:
  • Teremos um sistema onde prestadores de diversos tipos de serviços que desejam se cadastrar, terão que informar seus dados de contato e também seu preço por hora para que clientes que precisem, tenham em mão uma lista disponível.
  • Da mesma forma que teremos prestadores autônomos, teremos também empresas de pequeno porte que podem oferecer seus serviços, basta informar também os dados e o tipo de serviço prestado com o valor por hora de trabalho.
  • Existe uma equipe que recebe os dados dos prestadores "autônomos" e cadastra no respectivo sistema e uma equipe que recebe os dados das empresas prestadores para cadastrar no respectivo sistema.
  • Então temos um sistema de prestadores autônomos e um sistema empresas prestadoras, todos devidamente autenticados com seus sistemas de login.
  • O cliente que desejar consultar os serviços precisará fazer login também, caso não tenha, será solicitado um cadastro, para ter acesso a ambos os registos (autônomos e empresarial).

Desenho da arquitetura:





Explicando um pouco o desenho:
  1. Microsserviço de login/cadastro para Clientes;
  2. Banco de Dados login Clientes;
  3. Microsserviço de listagem de unificado de Prestadores e Empresas para os clientes;
  4. Microsserviço de listagem de Prestadores;
  5. Microsserviço de listagem de Empresas;
  6. Microsserviço de login/cadastro equipe que cuida dos Prestadores Autônomos;
  7. Banco de Dados login equipe que cuida dos Prestadores Autônomos;
  8. Microsserviço cadastro Prestadores;
  9. Banco de Dados cadastro Prestadores;
  10. Microsserviço de login/cadastro equipe que cuida das Empresas;
  11. Banco de Dados login equipe que cuida das Empresas;
  12. Microsserviço cadastro Empresas;
  13. Banco de Dados cadastro Empresas;
Obs.: Na VM com Ubuntu Server, iremos utilizar um IP da nossa rede mesmo. No meu caso, eu peguei um IP DHCP na rede 192.168.0.0/24.

A rede de comunicação entre os containers, é a padrão da instalação do Docker, então todos eles ficaram na rede 172.17.0.0/16.

Para que eu possa acessar externamente os microsserviços e banco de dados eu faço redirecionamento de portas.
Essa parte de rede é um bem mais complicada, então eu mantive tudo dessa forma.

Criação da VM com Ubuntu Server versão 22.04 

Clicar em Novo:


Na primeira tela, iremos informar o nome da VM que no nosso exemplo será Docker-Server, do Tipo Linux e Versão Ubuntu (64-bit):



Depois de clicar em Próximo, vamos inserir Memória Base com 2GB (2048 MB) e Processadores em 2 (CPUs):


Em disco Rígido, vou manter o padrão de 25GB já sugerido para este tipo de VM. Mas como os containers do exemplo utilizam pouco espaço, se você tiver menos, pode colocar menos aqui:


Ao final, temos um resumo do que será criado:


Clicar em Finalizar e esperar que a VM seja criada.

Depois disso, precisamos alterar a placa de rede que por padrão do VirtualBox é NAT para Bridge e assim será possível a entrega de IP DHCP para a VM.

Selecione a VM, Configurações - Rede - Escolher o Adaptador 1, trocar de NAT para Placa em modo Bridge no campo "Conectado a:" e no campo Nome selecionar a interface do seu host hospedeiro que recebe IP DHCP.
No meu caso é essa interface Wifi wlp3s0



Pronto.
O passo de criação da máquina virtual finalizou e agora vamos para o passo de instalação do Sistema Operacional.

Instalação do Ubuntu Server

Eu já tenho o download da ISO com a imagem do Ubuntu Server 22.04. Caso não o tenha, pode baixar direto no site da Canonical - https://ubuntu.com/download/server

Vamos iniciar a VM criada no passo anterior. Selecionar a VM e clicar em Iniciar:


Irá abrir uma nova janela pedindo para selecionar o arquivo .ISO que iremos utilizar na instalação:



Assim que selecionar o .ISO, clicar em Montar e Tentar Novo Boot.

A seguir estão os prints com a instalação do Ubuntu. Eu vou colocar apenas a sequência dos prints pois não teve nenhuma alteração em relação a instalação padrão. Apenas na parte do SSH. Como nós vamos usar para acessar a VM de forma remota, eu já pedi durante a instalação para que isso seja feito.
Usuário e senha também fica ao seu critério, mas se quiser seguir o exemplo:

Usuário: docker
Nome do Servidor: docker-server


















Dando tudo certo com a instação do Ubuntu Server, habilitará uma opção de Reboot Now. Após esse reboot estaremos prontos para acessar e ir para o próximo passo.

** Importante **

Durante a instalação, será informado o IP que a VM recebeu do DHCP. No exemplo, o IP atribuído foi: 192.168.0.32

Agora vamos acessar a VM de forma remota e seguir para o próximo passo.

Acesso por SSH

Da sua estação de trabalho (pode ser a mesma onde você instalou o VirtualBox), vamos acessar por SSH a VM criada (Docker-server):
$ ssh docker@192.168.0.32


** Caso seu acesso seja através de um equipamento com Windows, utilize um Putty ou algum outro cliente SSH **

Instalação do Docker

Estamos quase lá para deixar nosso ambiente pronto para subirmos nossos microsserviços. Para isso, vamos instalar o Docker.

Recaptulando, Docker é uma plataforma de virtualização de contêineres que permite empacotar, distribuir e executar aplicativos de forma consistente em diferentes ambientes.

Atualizar a lista de repositórios do Ubuntu:
$ sudo apt-get update


Instalação das chaves GPG oficiais do Docker:
$ sudo apt-get install ca-certificates curl


$ sudo install -m 0755 -d /etc/apt/keyrings


$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

$ sudo chmod a+r /etc/apt/keyrings/docker.asc


Adição do repositório nos sources do Apt: 
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


$ sudo apt-get update


Instalação dos pacotes do Docker:
$ sudo apt-get install docker-ce docker-ce-cli containers.io docker-buildx-plugin docker-compose-plugin


Para testar a instalação do Docker, vamos utilizar uma imagem simples de "hello-world". O resultado será o seguinte:


Perfeito, agora temos nosso ambiente "base" preparado para a próxima etapa que será voltada especificamente para criação do containers, download das imagens que iremos
utilizar e upload dos códigos que iremos rodar em cada container.

Como tem bastante coisa até aqui, vou parar por agora para que todos consigam dedicar um tempo na preparação do ambiente e deixá-lo funcional para o que vem depois. 

Abs e até a próxima.
:wq!

Nenhum comentário:

Postar um comentário