What is microservice architecture?
5 minute read
As agile methodology and continuous improvement become the default for modern development teams, microservices have gained increasing popularity. Many complex businesses are moving away from the rigid monolithic software to the flexible microservice architecture.
But, what are microservices? And how does microservice architecture add value to businesses?
What is microservice architecture?
Microservice architecture is most broadly defined as a single process that deals with a set of functional elements that is architecturally separate from other functional services. Or, in other words, microservice architecture is an architecture style in which large complex software or technology is broken into smaller services which can be deployed individually and are loosely coupled.
Microservices are distributed and loosely coupled so that changes to one service won’t break the entire app. This allows development teams to rapidly implement new components or capabilities to an application as the business’ needs change.
The term "microservice architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization and business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.
-Martin Fowler, Software development thought leader, author, and Chief Scientist of ThoughtWorks
Microservice architecture breaks an application or platform down into its core functions, or services.
An e-commerce platform, for example, may feature microservices for a variety of capabilities ranging from product, order management, and/or inventory management, to search, payment, and loyalty management. These microservices can be consumed separately or together, depending on the business’ needs. Dev teams utilizing microservice architecture find they are better suited to make constant changes more seamlessly.
Microservice architecture vs. monolithic architecture
Monolithic architecture supports applications that are built as a single unit consisting of three parts: a database, a user interface, and a service-side application. To make any alterations to a monolithic application, a developer must develop and deploy an entirely separate, updated version of the server-side application.
On the other hand, microservice architecture is expressed via APIs that encapsulate core business capabilities. The interface of a microservice-based application is defined by the business. Microservices are pulled in based on the business’ needs, creating a very adaptable and agile application from a development-standpoint.
With monolithic architecture, each application operates in relation to the other applications. Whereas with microservice architecture, each microservice is an API in itself with well-defined functionality, so it can function independently.
Monolithic architecture makes customizations riskier because one change can impact many aspects of the application. A microservice architecture approach encourages customizations, because you can enhance an existing microservice or deploy a new one without disrupting others.
Enhancements, updates and upgrades to monolithic architecture are often more expensive and labor intensive because of the tight coupling and dependencies built into the application. Microservice architecture offers unlimited potential to extend via new microservices and APIs as your needs continue to change.
What are the benefits of microservice architecture?
Microservice architecture generally creates more efficient and effective development teams.
1. Easier to build, deploy and maintain applications
At its core, microservice architecture aims to simplify a system’s deployment and processes. Inherently, applications become easier to build, deploy, and maintain when they’re split into smaller, consumable services. Additionally, managing code is easier for development teams because each microservice is a separate piece of code. Each service can be implemented using different languages that allow each to be deployed, updated, and managed independently. Finally, if a problem occurs in a microservice, there is no risk to the rest of the application since each microservice is independent.
2. Organized around business capabilities
Instead of development teams being focused on writing code for an entire application at once, they are able to focus on business functionalities separately, utilizing a variety of microservice. When development teams work with microservice architecture, each member can focus on a particular functionality which often creates a more efficient and effective development team. Their output is an application that is designed with all parts functioning exactly as they should - unique to each business.
3. Improved scalability, agility, and speed
Microservice architecture takes on the age-old technology question, “Will this scale with my business?” Because microservice architecture is breaking up an application into smaller, manageable services, the application becomes faster to develop and easier to manage. Development cycles are shortened, resulting in more frequent deployments and updates. Different teams can also be working on components without risk to the back end or needing to wait for another component to get to a certain point.
4. Focused teams and a small code base
With microservice, code and data aren’t shared which reduces the amount of code that needs to be touched in order to add updates or features. The benefit of this is twofold; (1) there is reduced risk to the back end and (2) updates and features can be rolled out quickly. The small code bases also allow for development teams to be small and focused which promotes greater agility.
Two frequent “gotchas!” of microservice architecture:
With all technologies and architectures, there are always important things to consider and be aware of as you get started:
1. Development requires thoughtful orchestration
Microservice architecture requires time spent identifying dependencies between your services so that you ensure effectiveness of the entire application. From a build standpoint, be aware that with microservice architecture, completing one build might trigger builds across other services.
2. Test, test, and test again!
Integration and end-to-end testing can become more arduous and more important. That’s because a failure in one microservice could cause another failure down the line, depending on how you’ve architected your services to support one another.
Explore the Sitecore OrderCloud platform and architecture in the Feature Guide.