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:
- Microsserviço de login/cadastro para Clientes;
- Banco de Dados login Clientes;
- Microsserviço de listagem de unificado de Prestadores e Empresas para os clientes;
- Microsserviço de listagem de Prestadores;
- Microsserviço de listagem de Empresas;
- Microsserviço de login/cadastro equipe que cuida dos Prestadores Autônomos;
- Banco de Dados login equipe que cuida dos Prestadores Autônomos;
- Microsserviço cadastro Prestadores;
- Banco de Dados cadastro Prestadores;
- Microsserviço de login/cadastro equipe que cuida das Empresas;
- Banco de Dados login equipe que cuida das Empresas;
- Microsserviço cadastro Empresas;
- 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:
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:
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