order-service-clean-arch

module
v0.0.0-...-862ae4a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 5, 2024 License: MIT

README

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:

  1. Criação de um novo pedido: POST /order;
  2. 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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL