Fernando CortÃ©s - Fotolia
Modular applications that consist of small components or services -- called microservices -- are replacing traditional monolithic applications. And while the microservices approach is a great fit for cloud, there are microservices pros and cons all businesses should consider.
One of the biggest advantages of microservices-based applications is that they often use compute resources more efficiently than traditional apps. This is because they scale components to handle functional bottlenecks. As a result, developers only need to deploy compute resources for additional components, rather than deploy entirely new iterations of a complete application. Ultimately, this leaves more resources available for other tasks.
Another benefit of microservices-based applications is that they are faster and easier to update. When developers change a traditional monolithic application, they must do detailed QA testing to ensure the change doesn't affect other features or functionality. But with microservices, developers can update individual components of the application without impacting other areas. It's still necessary to test a microservices-based application, but it's easier to identify and isolate issues, which speeds development and supports both DevOps and continuous application development.
A third benefit is that microservices architectures complement emerging cloud services like event-driven computing. Features such as AWS Lambda allow developers to write code that remains dormant until an application event triggers it. Compute resources are only used when an event is being processed, and a business only pays per-event rather than for constant computing instances.
The drawbacks of using microservices
Despite their benefits, microservices architectures have received some criticism.
While microservices-based architectures break down an application into components that developers can more easily manage and scale, they don't make the overall application any easier to build. Microservices-based applications still need to offer the same features and perform the same functions as their monolithic equivalents.
What's more, each microservices component found in an application uses an API to exchange data. Changes to the API can introduce errors, such as message format differences between API versions. Also, as more components attempt to exchange information, network congestion can occur.
Next, testing and deploying microservices-based applications can also be more complicated. Launching a microservices application isn't just a matter of running an .exe file. Instead, a microservices deployment often requires a detailed script that provisions, loads, logically connects and then starts up the necessary components in their virtualized instances. It's a complex process, and it's even more challenging to migrate such a deployment.
Lastly, many microservices-based applications use supplemental services, such as load balancing, automated scaling and event-driven computing, which makes developers reliant on cloud providers' availability and performance. This interdependency on outside services and APIs can also lead to reliability and version issues.
Microservices provide a new paradigm for software developers, allowing them to develop complex enterprise applications as a series of related functional compartments. While these compartments are ideal for cloud-based deployments, developers must carefully weigh microservices pros and cons before deployment.
What does the future hold for app servers?
Prepare your infrastructure for microservices
Test your microservices skills with this quiz
Enabling microservices through cloud computing