Fernando Cortés - Fotolia

Manage Learn to apply best practices and optimize your operations.

Prepare developers for these microservices pros and cons

Applications that use microservices can deliver big benefits to an enterprise -- especially those using cloud. But they aren't without their drawbacks.

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.

Next Steps

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

This was last published in October 2015

Dig Deeper on Deploying Microservices

PRO+

Content

Find more PRO+ content and other member only offers, here.

Join the conversation

6 comments

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

What benefits and challenges have you seen from adopting microservices?
Cancel
Micro services make it easier to reuse services and code. They also separate an application into logical components that are easier to test.
Cancel
Testing isn’t necessarily easier in a microservices architecture. A business process can span multiple services across multiple networks, with some of those services (potentially) controlled by other teams, so you have less control over interfaces and APIs made available by another team’s services. This means that the risks associated with the testing of those services can vary greatly from those associated with services under your team's control.
Cancel
Benefit: you can replace GUI automation with API automation, which brings a whole lot of benefits.
Benefit: eases pain of adopting agile/scrum with big development teams.
Challenge: business analysts and testers need to have a degree of specialized technical skills to test the components.
Cancel
I don’t see how not making the overall application easier to build is a drawback. A drawback would be if it makes the application harder to develop, which may or may not be the case.
Cancel
"Next, testing and deploying microservices-based applications can also be more complicated."
The point about deployment might have some degree of truth, but testability of isolated components is a huge benefit, rather than a drawback. Automation of checkpoints at API level will result in earlier paybacks, broader coverage, and much more robust/reliable execution of scripts - comparing to automation at GUI level.
Cancel

-ADS BY GOOGLE

SearchDataCenter

SearchAWS

SearchServerVirtualization

SearchCloudApplications

SearchCloudComputing

Close