According to Smartbear, “Microservice architecture, or simply microservices, is a distinctive method of developing software systems that has grown in popularity in recent years.  In fact, even though there isn’t a whole lot out there on what it is and how to do it, for many developers it has become a preferred way of creating enterprise applications.  Thanks to its scalability, this architectural method is considered particularly ideal when you have to enable support for a range of platforms and devices—spanning web, mobile, Internet of Things, and wearables—or simply when you’re not sure what kind of devices you’ll need to support in an increasingly cloudy future.”

More simply, microservice architecture is an architectural style that structures an application as a collection of loosely coupled services that each facilitate businesses services. It not only enables the continuous delivery and deployment of complex applications, but it allows you to scale applications by service.

Microsoft provides a nice illustration:

Adding Realtime Communication to Microservices

In a microservice environment, you can add a realtime reverse proxy instance (like Pushpin) to listen for instant updates from other microservices without the need for a centralized message broker. Each microservice gets its own realtime proxy instance, and microservices communicate with each other via your organization’s own API contracts rather than a vendor-specific mechanism.

Resources

Messaging Patterns for Event-Driven Microservices by Fred Melo – “In a microservices architecture, each microservice is designed as an atomic and self-sufficient piece of software. Implementing a use case will often require composing multiple calls to these single responsibility, distributed endpoints. Although synchronous request-response calls are required when the requester expects an immediate response, integration patterns based on eventing and asynchronous messaging provide maximum scalability and resiliency. Some of the world’s most scalable architectures such as Linkedin and Netflix are based on event-driven, asynchronous messaging.”

Microservice Architecture Fortified for Real-Time Communications by Wolfram Hempel – “But this flexibility comes at a price: Enterprise-scale microservice architectures quickly become highly complex. Load-balancing clusters, routing requests to endpoints, orchestrating distributed messaging, sharding storage layers, and facilitating concurrent read and write access are just some of the many challenges.  With the increasing move from request-response workflows to streaming real-time data — be it for financial price distribution, social messaging, collaboration apps, or Internet of Things (IoT) data aggregation — we have to rethink the way our services interact and share resources. If you’re responsible for implementing and supporting real-time communications and collaboration, strengthening your backend’s spine will help you create more dynamic, scalable, and manageable deployment strategies.”

Microservices: Architecture for the Real-time Organization by Kevin Webber – “The real-time organization is responsive to change. Real-time organizations architect their systems to evolve naturally as they adapt to the competitive landscape around them. At the core of real-time organizations are microservices. The microservice architecture (MSA) empowers independent teams within large organizations to move at the pace of startups, freeing them from the constraints of “design by committee” and other architectural anti-patterns that ground productivity within the enterprise to a halt.  We explore all of the relevant patterns of microservices architecture including domain-driven design (DDD), circuit breaker, data pump, saga pattern, distributed transaction, async messaging, etc.”