freshidea - Fotolia
As more organizations move to become digital enterprises, among the first moves they make is to step away from...
large monolithic applications to smaller, more flexible microservices-based applications.
This approach to digital transformation is driven by the need for greater agility and scalability. With software becoming a differentiating factor in just about every industry, every company must provide or maintain its own software factory of sorts to be able to update its software offerings as quickly and as often as possible to keep up with the competition.
The microservices architecture is emerging as a key method of providing development teams with flexibility and other benefits, such as the ability to deliver applications at warp speed using infrastructure as a service (IaaS) and platform as a service (PaaS) environments. With microservices, developers can break monoliths into a bunch of smaller, independent services, each with its own business logic.
The microservices can be scaled and deployed separately and written in different programming languages. But a key decision many organizations face when deploying their microservices architecture is choosing between IaaS and PaaS environments.
A microservice is a tightly scoped, strongly encapsulated, loosely coupled, independently deployable and independently scalable application component, according to Gartner. Indeed, microservices are based on the concept of service-oriented architecture (SOA), Gartner analyst Anne Thomas said. In fact, some people refer to microservices as "SOA done right," she said in a report.
And unlike monolithic architectures, microservices divide complex applications into smaller parts consisting of services that communicate with each other through a message broker, database and REST API, Forrester Research analyst Randy Heffner said.
Larry Carvalhoanalyst, IDC
Yet microservices architecture is still in the "innovators" stage of adoption, according to Gartner. And of the companies using it, most are born-on-the-internet, cloud-native entities such as Netflix, Google, Twitter, Uber and Airbnb. In a 2016 Gartner study, the research company noted that early adopters of microservices have been able to cut development lead times by as much as 75%.
Meanwhile, monolithic architectures typically require long-term commitments to a particular technology stack and can require significant resources to scale. Microservices help users avoid those issues as each service is deployed separately and has its own business logic. That reduces dependencies between teams and makes it easier to add new features on the fly.
"Adopting a microservices architecture is a key component to cloud-native application development, which is, above all, about speeding up iteration in innovation and value delivery," said Rhett Dillingham, senior analyst for cloud services at Moor Insights & Strategy. "To be most effective in cloud-native development, using microservices requires adopting features supporting a continuous delivery and DevOps approach. Use of Docker containers to ease implementation of DevOps within a container orchestration tool like Kubernetes, which eases continuous delivery, is common practice. Most cloud platforms offer features [in software] or services [in IaaS] automating the building and running of microservices using these tools."
How microservices technology works on PaaS vs. IaaS
What each organization stands to gain from moving to a microservices architecture depends on their cloud infrastructure choice, said Sergey Sverchkov, a project manager and development lead at Altoros, a Silicon Valley system integrator focused on the cloud. Sverchkov said running an app on bare IaaS is more affordable, "but you will need a DevOps team to maintain it." However, using a PaaS is more expensive, but it can shrink release cycles from weeks to hours, he noted.
The differences between IaaS and PaaS are distinct. Platform as a service basically includes APIs for operational tasks such as provisioning a container, monitoring resources for auto-scale triggers, provisioning a data model and connecting containers to the network. Infrastructure as a service is the layer below.
"IaaS just gives you network, storage and compute," IDC analyst Larry Carvalho said. "It's not going to get you what you need. You need some services on top of that."
The distinction brings to mind the old app server concept from the SOA world, where developers could get higher-level APIs to system services such as transaction management, object-relational mapping or message queuing. Only now, we are talking about cloud-based services. PaaS also includes provisioning, deployment and orchestration.
In a blog post, Gnani Dathathreya, director and distinguished engineer at Capital One, wrote that with a monolithic app server, "A single faulty service can bring down the entire app server and all the services running on it. Microservice differs in that each service runs in its own container."
Carvalho said every PaaS provider "is going toward a cloud-native approach, which is containers, container orchestration with Kubernetes, container security and all the features that you used to use in the traditional PaaS but now moving to a microservices approach. So microservices and containers and cloud functions are all in there together."
Gartner agreed. "By 2018, most high-control application (hca) PaaS providers will include microservices infrastructure capabilities in their [app PaaS]," Thomas said in her report.
Features to look for
How do you decide between IaaS and PaaS? Despite a more recent shift toward PaaS for microservices architectures, there are still plenty of companies that go the IaaS route, using platforms such as Amazon Web Services (AWS) or Microsoft Azure. Netflix was an early pioneer in migrating to AWS for microservices, building a slew of open source software along the way to make up for some of the things missing in the IaaS layer.
Capital One's Dathathreya noted that his organization also had to add components. "Part of creating our microservices architecture involved developing infrastructure automation, container management solutions and a DevOps pipeline for our microservices," he said.
Moreover, Dathathreya said the company's DevOps pipeline components for microservices include source code management, a build server, code repository, image repository, cluster manager, container scheduler, dynamic service discovery, software load balancer and a cloud load balancer.
All of those are among the features needed for deploying microservices on IaaS environments. Other features required include the following:
- A mature Agile and DevOps practice for either IaaS or PaaS platforms. As most organizations are using microservices to support continuous delivery, a solid DevOps team is mandatory.
- Continuous delivery support. In an IaaS environment, DevOps engineers must independently install and configure build automation tools.
- Developer independence. PaaS platforms provide developer independence, whereas with IaaS, DevOps engineers may need to create multiple IaaS environments for each development group.
- Application runtime support. An application runtime is automatically deployed in a PaaS container. But with IaaS, the DevOps team needs to configure an application runtime on IaaS instances.
The bottom line
When weighing IaaS and PaaS, Gartner recommended that organizations approach microservices with caution since "most organizations don't have the type of web-scale agility and scalability requirements" to adopt a microservices architecture. However, if you do embark on a microservices journey, you should host your microservices in a modern PaaS that supports containers and provides container management services.
How many microservices are too many?
Looking at microservices adoption realistically
Blurred lines between IaaS and PaaS