Arquitetura de Contêiner

1. Introdução

1.1. Finalidade

Este documento tem como objetivo fornecer uma visão geral da arquitetura de contêineres utilizada no projeto InvestMinds. Apresenta de forma clara o fluxo de dados, o comportamento da aplicação e como as partes se relacionam, bem como expor de maneira objetiva as decisões arquiteturais que foram tomadas em relação ao uso de Docker.

1.2. Escopo

Este documento de arquitetura se aplica ao InvestMinds. Estão descritos neste documento os padrões de contêinerização adotados, ferramentas e tecnologias escolhidas.

1.3. Definições, Acrônimos e Abreviações

  • Docker - Plataforma que permite criar, gerenciar e executar contêineres, proporcionando portabilidade e consistência para aplicações em diferentes ambientes.
  • Docker Compose - Ferramenta para definir e gerenciar aplicações Docker multi-contêiner através de arquivos YAML.
  • Image - Imagem Docker que contém tudo o que é necessário para executar uma aplicação: código, runtime, bibliotecas e dependências.
  • Container - Instância em execução de uma imagem Docker.

2. Representação Geral da Arquitetura

Diagrama de Arquitetura de Contêiner

A aplicação utiliza contêineres Docker para isolar e gerenciar seus diversos serviços. Cada microserviço é empacotado em um contêiner Docker individual, permitindo escalabilidade e facilidade de gerenciamento.

3. Tecnologias

O diagrama abaixo mostra quais são as tecnologias usadas em cada parte do sistema. Em seguida, essas tecnologias são descritas brevemente.

3.1. Docker

Docker é uma plataforma que permite desenvolver, enviar e executar aplicações dentro de contêineres, promovendo consistência e portabilidade em diferentes ambientes de desenvolvimento e produção.

3.2. Docker Compose

Docker Compose é uma ferramenta que permite definir e gerenciar aplicações Docker multi-contêiner através de arquivos YAML, facilitando a orquestração de serviços interdependentes.

4. Requisitos e Restrições de Arquitetura

  • Aplicação deve ser construída baseada na arquitetura de microsserviços, utilizando contêineres Docker para cada serviço.
  • Os contêineres devem ser gerenciados e orquestrados utilizando Docker Compose.
  • A aplicação deve ser escalável horizontalmente, permitindo o aumento do número de instâncias de contêineres conforme a demanda.

5. Implementação

A implementação da arquitetura de contêiner segue uma estrutura bem definida para garantir a escalabilidade e manutenção do sistema:

  • Dockerfile - Arquivo de definição das imagens Docker, especificando como construir o ambiente de execução da aplicação.
  • docker-compose.yml - Arquivo que define os serviços, redes e volumes necessários para a aplicação.
  • ci/ - Scripts e configurações para automação dos processos de build e deploy.

6. Referências

Histórico de Revisão

Data Versão Descrição Autor
28/07/2024 1.0 Criação do documento Lucas Lima Ferraz