Full Featured (30-40 min.)
There are many criteria to consider when building your microservices architecture for scale and performance. The two major ones are programming language and inter-service communication.These decisions dramatically influence the scalability of the system. For our inter-service communication we chose NATS.io, an open-source, cloud-native messaging system for distributed systems; and Golang as the programming language. NATS.io is a highly performant Publish/Subscribe system which has a simple model that leverages both synchronous and asynchronous communication. Golang has a simple yet strong concurrency model, which helps building highly scalable systems fast without compromising simplicity.