go-coffeeshop
A coffee shop application with event-driven microservices has been written in Golang. Nomad, Consul Connect, Vault, and Terraform for deployment
Other version can be found at:
Technical stack
- Backend building blocks
- grpc-ecosystem/grpc-gateway/v2
- labstack/echo/v4
- rabbitmq/amqp091-go
- jackc/pgx/v4
- Masterminds/squirrel
- georgysavva/scany
- golang-migrate/migrate/v4
- Utils
- ilyakaznacheev/cleanenv
- sirupsen/logrus
- samber/lo
- golang/glog
- google/uuid
- google.golang.org/genproto
- google.golang.org/grpc
- google.golang.org/protobuf
- Infrastructure
- Postgres, RabbitMQ
- Hashicorp Nomad, Consul (Connect), Vault, Terraform
- docker and docker-compose
- devcontainer for reproducible development environment
CoffeeShop - Choreography Saga
Services
No. | Service | URI |
---|---|---|
1 | grpc-gateway | http://localhost:5000 |
2 | product service | http://localhost:5001 |
3 | counter service | http://localhost:5002 |
4 | barista service | http://localhost:5003 |
5 | kitchen service | http://localhost:5004 |
6 | web | http://localhost:8080 |
Starting project
Jump into .devcontainer
, then
> docker-compose -f docker-compose-full.yaml build
> docker-compose -f docker-compose-full.yaml up
From vscode
=> Press F1 => Type Simple Browser View
=> Choose it and enter http://localhost:8080.
Enjoy!!!
Screenshots
Home screen
Payment screen
Order list screen
HashiCorp stack deployment
The details of how to run it can be find at deployment with Nomad, Consult Connect and Vault.
Debug Apps
Trouble shooting
Development project trouble shooting
Roadmap
- Enhance project structure with DDD patterns
- Add testing
- Add and integrate with observability libs and tools
- Add user identity management (authentication and authorization)
- Add resiliency