Microservices and containers are hot trends in IT. Generally speaking, tech trends get hot because they address fundamental challenges that affect everyone. Those hot tech trends also have their own challenges, though.
I wrote this post about addressing the issue of scalability for microservices:
IT is being driven by DevOps and containers across many organizations. These twin trends are part of a larger shift in IT called microservices—breaking down the traditional monolithic approach to IT and software development into much smaller, more manageable components.
Scaling to meet demand is a significant issue for any IT deployment, though, and microservices are no exception. So before you dive into the deep end with microservices, you should understand what challenges you might face and how to overcome them.
What are microservices?
Before we start talking about how to deal with the challenges of scaling microservices, let’s talk about what microservices are. I generally refer to Wikipedia because I appreciate that the information is crowdsourced, so whatever the Wikipedia entry states is a sort of consensus definition. It’s particularly useful for cutting-edge or emerging concepts like microservices. Wikipedia defines microservices as “…a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. These services are small, highly decoupled and focus on doing a small task, facilitating a modular approach to system-building.”
Al Hilwa, program director of application development software at IDC, describes it this way: “Microservices is an architectural approach that draws on long, evolving experience in software engineering and system design, including the SOA efforts of the last two decades. Microservices architecture is enabled by a spectrum of tool categories, but is primarily an architectural approach to system design that also requires considerable organizational and cultural adjustment to execute successfully.”
More succinctly, microservices is a blanket term that applies to breaking IT systems and applications down to smaller, more granular elements. Containers take applications and services down to a self-contained, component level, and DevOps provides the framework for the IT infrastructure and automation to develop, deploy, and manage the environment.
Jason Bloomberg, president of Intellyx, talks about the distinction between a typical web service and a microservice, arguing against the tendency to try to simply rebrand web services as microservices. “A microservice, in contrast, is a parsimonious, cohesive unit of execution. It’s decidedly not a software interface itself, although it obviously has one. Instead, at the heart of the microservice is the running code itself. Microservices also contain their own runtime, so they don’t need to run on an ESB [enterprise service bus].”
Read the complete article on TechBeacon: The challenges of scaling microservices.