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:
- 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
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 |
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!!!
The details of how to run it can be find at deployment with Nomad, Consult Connect and Vault.
Development project trouble shooting
- 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