Example application
Our sample application is a simple distributed system consisting of three services. The three main services, product, search, and authentication, have a dependency on a database that they use to store their state. For simplicity, we are using MySQL; however, in a real production environment, you would want to choose the most appropriate data store for your use case. The three services are connected via the messaging system for which we are using NATS.io, which is a provider-agnostic system that we looked at in Chapter 9, Event-Driven Architecture:
To provision this system, we have broken down the infrastructure and source code into four separate repositories:
- Shared infrastructure and services (https://github.com/building-microservices-with-go/chapter11-services-main)
- Authentication service (https://github.com/building-microservices-with-go/chapter11-services-auth)
- Product service (https://github.com/building-microservices-with-go/chapter11-services-product)
- Search service...