What really is a Microservices Architecture? The term “Microservices” has become fairly popular in recent years, and has coincided largely with the increasingly popular move to hosting applications in the cloud. With a better understanding of what a Microservices Architecture is and how to implement one, you’ll see that it’s not just a Cloud Architecture pattern.
One Service Per Task
At the most basic level, using a Microservices architecture within an application mean breaking up the internals of the application into many small peices. While you may still have a single UI (web or desktop app), the actions of saving data, exporting to zip files, sending emails, etc, etc would all be broken out into separate, smaller programs that would be added together to make up the larger software application as a while.
The services are small – fine-grained to perform a single function
The main goal of Microservices is to break out each particular, vertical peice of functionality of a large software system / application into small individual programs. A good example of a vertical slice of an application is the functionality to send email notifications. Implementing the email functionality into a smaller program that is called somehow from other parts of the system enables just the email functionality to be versioned or migrated to run on different hardware or VM without potentially affecting the rest of the application or bring it down for users.
One of the complexities of Microservices architecture is the need to add some kind of communications method for the various microservices and other parts of the overall system to be able to communicate with each other.
Breaking up a large software system into smaller, individual programs using a Microservices architecture is a change in overall system design paradigm that adds the requirement of implementing some kind of inter-application communications medium.
There are many ways of implementing communication between the various programs that make up a Microservices architecture. The communications can be web service (REST, SOAP, etc) based, or more asynchronous such as database tables or some kind of message queue.
Azure Message Queues
When implementing a Microservices architecture in an application hosted on the Microsoft Azure platform, a useful features to use for inter-application communications are Azure Storage Queues or Azure Service Bus Queues/Topics.
Message Queues allow for the messaging to be implemented Asynchronously with the reliability that the message will eventually be handled and only handled once.
Here are a couple articles that cover how to implement both Azure Storage Queues and Azure Service Bus Queues:
Here are some links to additional resources that go into much further detail on what makes up a Microservices architecture.
I really encourage you to read these articles as they really go in depth into what a Microservices architecture is.