Select Page

The ReleaseTEAM Blog: Here's what you need to know...

Microservices for Cloud-Native Initiatives

This post is part 6 in our cloud-native series, covering microservices development approaches for organizations adopting a cloud-first or cloud-native strategy. You can catch up on the series beginning with Part 1.

What are microservices?

Over the past decade, there’s been a concerted effort to move from monolithic applications, where all components of the application are contained within a single application and often even run in the same process, to a microservices approach. Microservices break up the functionality of those large applications into loosely coupled services that communicate with each other through RESTful API calls over the network.

There are many benefits to a microservices approach, particularly for organizations leveraging cloud resources and containers. Microservices are usually deployed in containers but can also be deployed directly on the OS, as serverless functions, or with unikernels.

What are some benefits of microservices?

Under the monolithic model, a slight change in one part of the application required a complete rebuild and re-deployment of the application. This created opportunities to introduce bugs into unrelated sections of code, long delays in deploying updates, and could decrease customer satisfaction if the application was offline during updates. The monolithic nature also hampered the ability to scale one component without incurring expenses, scaling the rest of the application.

In contrast, microservices allow development teams to update a smaller unit of software and deploy that unit independently. This flexibility supports CI/CD initiatives, which deploy smaller changes many times per week or even day. For organizations, this also means technical leaders can assign the correct number of developers to each microservice’s codebase, leading to better resource management and work effort estimations.

Microservices are deployed across several nodes, offering more application resilience than monoliths. If one node goes down, other nodes can take over until the node is available again.

What are some cautions when adopting microservices?

If you’re looking for easier builds or want to adopt CI/CD, more resiliency, and more focused development teams, microservices-based development may be the right choice. However, some organizations are finding that their microservices implementation has not met their business requirements over time as applications have scaled rapidly.

Microservice applications can be more difficult for developers to understand, as their components interact with others through API calls, and the other service’s code may be a black box. A holistic view of distributed systems is challenging, and tracing bugs can be time-consuming when you’re unsure which microservice is causing the problem.

Because other components depend on API behavior consistency, API code can become bloated as teams work to maintain and evolve API functionality without breaking any components that already use the API.

Finally, because microservices are constantly making calls to each other, network traffic can become congested–leading to increased latency and degradation of application performance.

That’s the lesson the Amazon Prime Video team learned when they attempted to scale their video stream monitoring tool. After evaluating how to remove scaling bottlenecks, they moved away from a microservices infrastructure towards a more hybrid model closer to a monolithic application (but not quite). By re-architecting, they were able to improve performance and drastically reduce costs.

Although this case study sounds like bad news for microservices, the team shares that they did not design the original application to scale to the thousands of streams they now need to analyze.

Should you adopt microservices?

Microservices offer many benefits, but each project must weigh the pros and cons to make an informed decision. In many cases, microservices offer increased resiliency, scalability, and faster deployments–particularly for organizations adopting a cloud-native development approach. In some edge cases where applications need to (or will need to in the future), microservices not initially designed to handle that scale may struggle with bottlenecks, API bloat, and overhead managing the complexity of multiple mini-apps and multiple codebases.

Our advice: take the extra time upfront to properly scope out current and future requirements to understand the tradeoffs in resiliency, ease of deployment, overhead, development time, and performance to make your implementation successful.

Join Our Mailing List

Please enable JavaScript in your browser to complete this form.
Name
=

Corporate HQ

1499 W. 120th Ave
Suite 110
Westminster, CO 80234
720-887-0489

Massachusetts

1257 Worcester Rd.
Suite 108
Framingham, MA 01701
866-887-0489

Canada

PMB# 604
1-110 Cumberland St.
Toronto, ON M5R 3V5
866-887-0489