Cloud computing adds flexibility to enterprise IT. When companies wish to take advantage of this, they are finding they need to turn to microservices instead of their traditional, monolithic architectures to accommodate frequent change.
Microservices can overcome the challnges presented by frequent change, “by splitting monoliths into multiple independent services, each with its own simple business logic,” according to Sergey Sverchkov, a Solutions Architect with Altoros. Doing so leads to another issue: “choosing either PaaS or IaaS for microservices is an open question, “ he says.
Sergey recently posted a thoughtful piece on the topic of PaaS vs. IaaS when implementing microservices on the Altoros blog. Altoros provides system integration services for a worldwide client base with the Cloud Foundry PaaS, yet Sverchov’s piece takes a balanced view of which approach to take.
His fundamntal point is that a DevOps team will be spending a lot of time monkeying around (my phrase, not Sergey’s) when companies work straight to the bare infrastructure; taking the PaaS approach. “An automated PaaS is a bigger investment,” he writes, “but it can shrink release cycles from weeks to hours and even eliminate some downsides of the microservices model.”
In his post, Sergey covers six different areas regarding the implementation of microservices, and the differences between IaaS vs. PaaS in each of these areas, summarized as follows:
1. One service for one job. With IaaS, “every service is deployed as an (IaaS) instance; DevOps ar responsible for configuring valid communication interfaces.” With PaaS, “scalability can be controlled by a developer. Communication endpoints are served by the PaaS.”
2. Using different tools to implement different services. With IaaS, “DevOps needs to configure an application runtime.” With PaaS, “an application runtime is automatically deployed in a PaaS container.”
3. Loose coupling. With IaaS, “The DevOps team manages IaaS instances used for service deployment.” With PaaS, “containers are isolated elements for application deployment. Container lifecycle is managed by the Paas.”
4. Developer independence. With IaaS, “ DevOps may need to create multiple IaaS environments for each of the development groups.” Alternatively, with PaaS, development groups can be managed (using Cloud Foundry terminology) as “organizations” and “spaces.”
5. Continuous delivery. With IaaS, “DevOps engineers need to install and configure build-automation tools and integrate them with a project repository.” Specficially with Cloud Foundry, “build-automation solutions can be deployed as a regular application.”
6. Integration with external services. With IaaS, “the DevOps team deploys external services. Applications connect (to them) using properties.” With PaaS, “a service broker can be used to deploy and publish some external services. Service binding makes it easier to connect an application instance to external services.”
In addition to the item about IaaS/PaaS and microservices, Sergey has authored a much longer technical whitepaper on the general topic of microservices vs. monolithic architectures, available through the blog section of the Altoros website.
I heard a lot of talk last year about major public cloud infrastructure providers starting to subsume PaaS into their offerings. Besides the potential for a new era of vendor lock-in, the IaaS vs. PaaS debate also involves significant functionality issues and questions of the skillsets, and more important, efficiency enterprise IT will have as the presence of cloud – public, private, and hybrid – increases within their organizations. Sergey’s post adds value to this debate.