Microservices have become very popular to break complex systems into loosely coupled services communicated with APIs. This talk covers well-known design patterns and go frameworks to build up microservices architecture successfully, and deploy your application on any cloud provider.
Divide and conquer is a maxim valid to create an empire in ancient times, but also to build a complex application nowadays.Microservices architectures follow this paradigm to break complex systems into loosely coupled microservices where each microservice implements a single-responsibility and provides a clear interface (API). There are several styles of communication in microservices: RPC, REST, and brokered messaging. They are not mutually exclusive and the application may need a combination. Features like simplicity, performance or reliability may lean towards one of these styles. Although it is possible to build up a microservices architecture from scratch in go, we can take benefit from some microservices frameworks: go-kit, go-micro, and others. Some common patterns have emerged from distributed architectures: service discovery, circuit breakers, logging, instrumentation, metrics, distributed tracing, api gateway, and so on. Implementing these patterns into our architecture will improve our system by giving better capabilities of management and monitoring. Finally, most application are deployed in cloud nowadays. Serverless computing may help us to build cheap and fast microservices. The Go CDK framework is an interesting approach to support multiple cloud providers.