order-service-clean-arch
Este repositório contém um projeto desenvolvido durante o módulo Clean Architecture do curso GoExpert da FullCycle.
No arquivo CleanArchitectureReviewGuide_ptBR.md, consta um resumo foi
feito para revisar os conceitos da Clean Architecture. Ele abrange os assuntos abordados no curso com mais informações
que julguei ser necessário adicionar.
Descrição
order-service-clean-arch uma aplicação desenvolvida utilizando os princípios de design da Arquitura Limpa (Clean
Architecture). Ela expõe três serviços Web:
- HTTP Server: porta
8001
- gRPC: porta
50051
- graphQL: porta
8080
HTTP Server
A aplicação possui dois endpoints:
- Criação de um novo pedido:
POST /order
;
- Listagem de pedidos:
GET /order
.
Ambas as chamadas estão definidas na pasta api na raiz do projeto.
gRPC
Nós estamos utilizando a implementação gRPC-go do gRPC
comunicação via RPC com Protocol Buffers 3.
Você pode utilizar o Protocol Buffer Compiler para analisar e compilar o
arquivo .proto
, que contém as definições dos serviços e mensagens. Veja
o Quick Start guide para mais informações.
Se você quiser fazer alterações no projeto, você pode compilar o arquivo .proto
com o seguinte comando:
protoc --go_out=. --go-grpc_out=. internal/infra/grpc/protofiles/order.proto
Você pode instalar o Evans gRPC Client para realizar as RPCs. Ele lista os
serviços disponibilizados pelo nosso servidor gRPC de forma amigável.
GraphQL
Configuração
O arquivo cmd/orderSystem/.env
contém as declarações das variáveis de ambiente para configurar os recursos da
aplicação.
Esta aplicação utiliza o Viper para carregar essas configurações. Você pode definir o
valor das variáveis de ambiente tando no arquivo .env
mencionado acima ou se preferir, declara as variáveis no
sistema operacional.
Construção e Execução
Execute o comando abaixo para subir as dependências e executar a aplicação:
make docker-up
Isso irá iniciar o RabbitMQ, o MySQL e uma instância da nossa aplicação em containers Docker com a seguinte
configuração:
- HTTP Server: porta
8001
- gRPC: porta
50051
- graphQL: porta
8080
Para mudar essas configurações basta editar no arquivo cmd/orderSystem/.env
e executar o comando abaixo:
make docker-rebuild-up
Esse comando vai excluir as instâncias e dependências da nossa aplicação que estão em execução (se existir), vai
reconstruir a imagem e executá-las novamente em containers docker.
Outros commandos
Para construir a imagem da aplicação, utilize:
make docker-build-image
Isso vai fazer o build de uma imgaem com o nome: carloseduribeiro/order-service-clean-arch:latest