The concept of microservices is rapidly moving up the hype curve in 2015 as enterprises look to further replicate the successful models of Amazon, Netflix, and other cloud-based disruptors. But as with many technology trends in the past few years, the lack of a commonly shared definition often creates confusion.
For those not familiar with the concept, microservices is essentially a software architectural design pattern. The fundamental premise of microservices is that value can be unlocked through decomposing large, monolithic legacy applications into a set of small independent, composable services that each can be accessed via RESTful APIs.
Take an e-commerce application as an example. Instead of providing all server-side functionality through a single, monolithic application, a microservices architecture would break the application into separate, independent services for discrete functions such as order processing, credit check, order fulfillment, order tracking, and so forth. The potential benefits from the model include:
- Innovation. New versions of small independent services can be deployed more rapidly, making it easier to experiment and innovate.
- Manageability. Smaller microservices code bases are easier for developers to understand, making changes and deployments easier.
- Resiliency. If one of the microservices goes down, it won’t necessarily bring the whole application down as it would with a monolith.
- Scalability. Individual microservices can be deployed and scaled independently of each other.
But just as with Cloud and DevOps, the devil is often in the details. Here are five basic things you need to know to separate the microservices hype from the reality:
1. Microservices are not a totally new concept. Microservices share a number of similarities with service-oriented architecture (SOA), which has been around for two decades.In fact, given that SOA basically calls for loosely coupled, independent services addressable through a common communications protocol, many suggest that differences are a matter of semantics. While that debate is a topic for a different day, is it helpful to note that while microservices focus on composing applications from services, SOA largely results in services composed of different applications.
2. Enterprises will be the early adopters. Microservices address a big company problem: the need to break up monolithic, legacy applications to better enable innovation and speed. Most startup applications don’t have the size and scale that create the need for microservices architectures. Netflix—the poster child for most recent cloud and application trends—was, in fact, originally deployed as a single, monolithic application before it started to migrate to a cloud-based microservices architecture in 2008. Unlike the case with most technology trends, enterprises—not startups—will be better positioned to drive early adoption of microservices architectures.
3. It’s about more than cloud. One attribute that makes the microservice model particularly attractive to enterprises is the fact that services can be deployed on independent technology stacks. While there are strong advantages to leveraging Cloud Foundry or other PaaS models to deploy and orchestrate microservices, individual services can still reside on legacy platforms, if necessary.
4. DevOps is a big part of the story. One of the primary drivers of microservices is the desire to decouple business functionality to allow innovation to be driven at the pace most appropriate to a given service. For market-facing microservices requiring agile, iterative models to drive experimentation and innovation, DevOps and continuous release models will be required to fully take advantage of service independence.
5. Microservices is not a free lunch. The benefits of the microservices model come at the cost of increased operational complexity, due to things like platform heterogeneity, the need for service discovery, and messaging and API call volumes. Availability and performance issues also can be created if auto scaling, load balancing and other automation tools aren’t used effectively. PaaS platforms can, however, help mitigate these challenges.
Microservices offer the ability for enterprises to turn the valuable IP locked in legacy applications back into a competitive advantage. As its value is inextricably intertwined with cloud and DevOps, microservices requires a well-thought-out approach that considers the desired target end-state platforms, skills and capabilities of the enterprise.