What are microservices, how do they work, and what are the advantages and disadvantages of using them in cloud-native architectures? An overview.
In brief
- Microservices split an application into small, independent units that are deployed and updated separately from one another.
- Cloud-native microservices make use of cloud capabilities such as dynamic scaling, load balancing and redundancy.
- The advantages are better reliability, targeted scalability, free choice of technology and independent deployments; the disadvantages are more development work, harder hosting, latency and the risk of incorrect domain boundaries.
- Researchable built its own microservice ecosystem for recurring functions such as authentication, email and external API connections in order to deliver projects faster.
In this blog post we dive into the world of microservices: what are they, how do they work, and what are the advantages and disadvantages of using them in cloud-native architectures? Microservices are particularly popular with large tech companies, because they are cheaper to develop and maintain than traditional monolithic applications. At Researchable we have invested in building our own microservice ecosystem, so that we can deliver new projects faster.
What are microservices?
Microservices are a modular software architecture aimed at improved scalability and collaboration within teams, especially for fast-growing applications. It is a form of distributed architecture that splits an application into small, independent units. The idea is that these autonomous services can be deployed and updated independently of one another. This can mean that new features can be introduced faster, without downtime. This is why many popular tech companies, such as Netflix, Uber and Spotify, have embraced this architecture.
The problem with traditional monolithic applications
The "monolithic" approach combines all the different components of an application in a single package. If a specific feature of such an application experiences a peak in traffic, the entire system architecture has to be scaled up.
Another problem with monolithic applications is collaboration between developers and the introduction of changes. Large monoliths often become complex, interconnected labyrinths of code. An internal change for feature A can unintentionally break feature B. This is known as "monolithic hell".
Microservices and cloud-native architecture
Microservices solve the "monolithic" problem by splitting an application into different services that can run on multiple servers and communicate with each other through APIs. This way, different parts of the application can scale independently based on usage patterns. And as long as the interface between the components stays the same, developers can work simultaneously on different parts of the application with a lower risk of introducing breaking changes that affect the entire platform.
Just as front-end applications are designed "mobile-first" these days to better match current usage habits, microservice architectures are designed for the cloud. Cloud-native microservices are built to take full advantage of the capabilities that cloud providers offer. Think of dynamic scaling, load balancing and redundancy for greater reliability.
Advantages of microservices
- Improved reliability: If a specific service fails, that does not affect the whole system. For example, if one part of the app stops working, you only lose that functionality, and not the entire app.
- Scalability: Smaller units of code can be scaled more easily without adjusting the whole service, which makes better use of the underlying hardware resources.
- The right tools for the right job: Microservices allow teams to easily integrate different technologies and stacks. When building monolithic applications, teams have to commit to a single programming language and a single framework.
- Dedicated database: Each microservice manages its own state. This makes applications more robust against changes.
- Independent deployability: Each service can be deployed and updated independently without affecting other services in the system. New features and bug fixes can be delivered quickly.
Disadvantages of microservices
- More development work: For small teams starting from scratch, microservices mean more work.
- Harder to deliver: Microservices thrive in PaaS applications. If the customer wants to host and manage the application themselves, microservices are not ideal. Customers must have the know-how to manage all the different components.
- Lack of domain knowledge with microservices: Microservices revolve around defining domain boundaries around the domain model. When teams start a new project, they often lack the context to make the right subdivisions. This can lead to a generally poor architecture, with negative consequences for performance and reliability.
- Latency: Microservices function by communicating with each other. This introduces latency on every query. This effect can be amplified when the wrong Domain model abstractions have been implemented.
How we use cloud-native microservices architecture at Researchable
As a software and data company, Researchable works on multiple projects for different customers at the same time. These projects range from AI-driven products to data platforms and data management platforms. Although every customer is unique, there is often a common foundation between projects: every customer needs authentication and communication via email. Many customers also need to be able to interact with external APIs. That is why we have invested time and resources in our own ecosystem of microservices, to implement some of these common functionalities.
As we have seen in this article, microservices are not always the right choice. For every new project we therefore carry out a careful evaluation to determine which architecture fits best.
Frequently asked questions
What are microservices?
Microservices are a modular software architecture that splits an application into small, independent units. These autonomous services are deployed and updated separately from one another and communicate with each other through APIs.
What is the difference between microservices and a monolithic application?
A monolithic application combines all components in a single package, which means that during a traffic peak you have to scale up the entire architecture, and a change to one feature can break another. Microservices split the application into separate services that scale independently and can be adjusted separately.
What makes microservices cloud-native?
Cloud-native microservices are designed to make full use of the capabilities of cloud providers. Think of dynamic scaling, load balancing and redundancy for greater reliability.
What are the disadvantages of microservices?
Microservices involve more development work and are harder to deliver when a customer wants to host the application themselves. In addition, a new project often lacks the domain knowledge to make the right subdivisions, and the communication between services introduces latency on every query.
How does Researchable use cloud-native microservices?
Researchable has built its own ecosystem of microservices for functions that recur across many projects, such as authentication, email communication and connections to external APIs. For every new project we first assess which architecture fits best, because microservices are not always the right choice.





