Skip to content

☕ A practical event-driven microservices demo built with Golang. Nomad, Consul Connect, Vault, and Terraform for deployment

License

Notifications You must be signed in to change notification settings

thangchung/go-coffeeshop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

22d3319 · Dec 28, 2022

History

64 Commits
Dec 26, 2022
Nov 27, 2022
Dec 28, 2022
Dec 24, 2022
Dec 6, 2022
Dec 28, 2022
Dec 28, 2022
Dec 28, 2022
Dec 19, 2022
Dec 19, 2022
Dec 24, 2022
Nov 26, 2022
Nov 26, 2022
Dec 27, 2022
Nov 27, 2022
Dec 28, 2022
Dec 28, 2022
Oct 26, 2022
Oct 17, 2022
Dec 20, 2022
Nov 26, 2022
Dec 6, 2022
Dec 28, 2022
Dec 26, 2022
Dec 26, 2022
Dec 25, 2022

Repository files navigation

go-coffeeshop

An event-driven microservices coffee shop application has been written in Golang and deployed using Nomad, Consul Connect, Vault, and Terraform.

Other versions in .NET/C# can be found at:

Technical stack

CoffeeShop - Choreography Saga

coffeeshop

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 worker only
5 kitchen service worker only
6 web http://localhost:8888

Starting project

Jump into .devcontainer, then

> make docker-compose

From vscode => Press F1 => Type Simple Browser View => Choose it and enter http://localhost:8888. Enjoy!!!

Screenshots

Home screen

home_screen

Payment screen

payment_screen

Order list screen

order_list_screen

HashiCorp stack deployment

coffeeshop_hashicorp

The details of how to run it can be find at deployment with Nomad, Consult Connect and Vault.

Development

Clean Domain-driven Design

clean_ddd

Generate dependency injection instances with wire

> make wire

Generate code with sqlc

> make sqlc

Debug Apps

Debug golang app in monorepo

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

Credits