... | ... | @@ -19,7 +19,18 @@ |
|
|
|
|
|
# Arquitetura do Sistema
|
|
|
|
|
|
- Explicação da Arquitetura e porque da escolha.
|
|
|
Na nossa arquitetura da nuvem usaremos principalmente o serviço [ECS(Elastic Container Service) da AWS](https://aws.amazon.com/ecs/). Este é um serviço de orquestração de contêineres totalmente gerenciado que facilita a implantação, o gerenciamento e a escala de aplicações em contêineres. Este seviço vai servir para garantir à nossa aplicação uma camada extra de segurança e escalabilidade.
|
|
|
|
|
|
No ECS usaremos uma instância do [AWS Fargate](https://aws.amazon.com/pt/fargate/) que é um mecanismo de computação sem servidor e com pagamento conforme o uso que permite a você se concentrar em construir aplicações sem gerenciar servidores.
|
|
|
|
|
|
Para realizarmos nosso deploy no ECS usaremos o [ECR(Elastic Container Registry)](https://aws.amazon.com/pt/ecr/) que é um registro de contêiner totalmente gerenciado que oferece hospedagem de alta performance para que você possa implantar imagens e artefatos de aplicações de forma confiável em qualquer lugar.
|
|
|
|
|
|
O fluxo da nosso deploy será enviar uma imagem conteinerizada da nossa aplicação, no total 3 imagens (frontend, backend e banco de dados), para o ECR. Com a imagem no ECR iremos para a configuração do ECS, onde criaremos uma task(um serviço) usando uma instancia do AWS Fargate.
|
|
|
|
|
|
Esse é um padrão de deploy oferecido pela propria AWS.
|
|
|
![Explicacao_Arquitetura](uploads/b2e8250292b5efef33b5632b9ee22ef8/Explicacao_Arquitetura.png)
|
|
|
|
|
|
Para mais informações do ECS e seu fluxo de deploy, a AWS oferece um [workshop](https://ecsworkshop.com/introduction/) sobre os serviços.
|
|
|
|
|
|
# Deploy
|
|
|
|
... | ... | @@ -33,21 +44,20 @@ |
|
|
|
|
|
## Diagrama de Componentes
|
|
|
|
|
|
- Para criar um diagrama de componentes eficiente para a aplicação "Cosmos", que ilustre claramente, podemos seguir a descrição a seguir, organizando os elementos conforme suas funções específicas:
|
|
|
|
|
|
- **Componentes de Infraestrutura**
|
|
|
- **Docker Containers**
|
|
|
- **Função**: Isolamento e gerenciamento de dependências.
|
|
|
- **Responsabilidades**: Cada componente do servidor (FastAPI, Gitlab Runner, Postgres) é implantado em um contêiner separado.
|
|
|
- **Gitlab Runner**
|
|
|
- **Função**: Automação de CI/CD.
|
|
|
- **Responsabilidades**: Automatizar atualizações e testes do código.
|
|
|
- **AWS EC2**
|
|
|
- **Função**: Hospedagem dos contêineres Docker.
|
|
|
- **Responsabilidades**: Fornecer recursos computacionais.
|
|
|
- **AWS S3**
|
|
|
- **Função**: Armazenamento para dados estáticos ou backups.
|
|
|
- **Responsabilidades**: Integrar-se com a aplicação para armazenamento de dados não-relacionais.
|
|
|
Um diagrama de componentes eficiente para a aplicação "Cosmos" pode ser organizado conforme as funções específicas de cada parte do sistema:
|
|
|
|
|
|
### Componentes de Infraestrutura
|
|
|
1. **Amazon Elastic Container Service (ECS)**: Responsável pela orquestração dos containers que rodam tanto o backend quanto o banco de dados.
|
|
|
2. **Amazon Elastic Container Registry (ECR)**: Repositório onde as imagens Docker são armazenadas.
|
|
|
3. **AWS Fargate**: Provedor de serviço serverless que gerencia a execução dos containers, dispensando o uso de servidores.
|
|
|
|
|
|
### Componentes de Backend
|
|
|
1. **NestJS**: Framework utilizado para o desenvolvimento do backend, que está dentro de um container Docker.
|
|
|
2. **PostgreSQL**: Banco de dados relacional que também é gerenciado via containers.
|
|
|
|
|
|
### Componentes de Frontend
|
|
|
1. **React**: Biblioteca JavaScript utilizada para o desenvolvimento do frontend, hospedada no **AWS Amplify**.
|
|
|
2. **AWS Amplify**: Plataforma para hospedagem e deploy de aplicações frontend, com integração direta ao repositório GitLab.
|
|
|
|
|
|
# Definições de Tecnologias
|
|
|
|
... | ... | |