In my previous blog post, “What DevOps and triathlons have in common: Connecting the dots,” I explained why it makes sense to consider cloud technology when implementing the DevOps concept of a continuous delivery pipeline.
The question now remains: What kind of cloud do I need for this?
In IBM we have several flavors of cloud solutions that we offer to our customers. IBM SmartCloud Enterprise+, IBM SoftLayer, IBM BlueMix, IBM SmartCloud Orchestrator and IBM SmartCloud Entry are just some examples for infrastructure as a service (IaaS) and platform as a service (PaaS) related cloud offerings from IBM, not to mention solutions from other vendors.
The implementation of a continuous delivery pipeline integrates various disciplines across the software development lifecycle, specifically the domains of build, deployment and test automation.
Deployment automation is the area where application deployment and cloud meet. Usually a continuous integration tooling triggers a build process that produces new artifacts like EAR files, WAR files or new schema files targeted to the database layer of the application. The artifacts get imported into the deployment tooling in order to either deploy the application into an existing environment or initiate a full stack releasing process. Full stack releasing means to provision and deploy the whole stack consisting of the infrastructure, platform and application layer.
IBM provides a deployment automation tool (IBM UrbanCode Deploy) that acts as the glue code between the build automation, deployment automation and test automation processes. In the area of deployment automaton it integrates infrastructure provisioning and application deployment by integrating with cloud technology platforms.
The diagram to the left depicts the separation of responsibility between application deployment and infrastructure provisioning with respect to a full stack release approach. The cloud platform should be capable of provisioning the overall platform stack up to a configured middleware stack so that the application deployment can begin its work in configuring and deploying the application itself.
IBM UrbanCode Deploy integrates and controls the overall process by integrating cloud technology stacks. So let’s come back to the initial question: What capability does the cloud management platform have to provide?
Let’s categorize cloud solutions first by simply attaching them to the service layer they cover. So in other words are they addressing IaaS, PaaS or software as a service (SaaS) solutions? The diagram to the right positions some IBM cloud solutions into the appropriate areas. The other dimension of consideration is the deployment model—considering whether the solution is falling into the area of private or public cloud solutions.
Now, coming back to the consideration of what is the best cloud solution to be integrated into a continuous delivery pipeline, here are some general statements (which I will detail in follow-up blog posts throughout the coming weeks):
SaaS solutions are out of scope since the application is provided to you as a service and releasing software is in the hand of the cloud service provider (exception: you’re a CSP yourself!).
The distinction between private and public cloud is irrelevant to the implementation of a continuous delivery pipeline.
The higher the service level the cloud platform can provide, the better. From an application deployment perspective a configured platform should be provisioned, ready for deploying the application. That means PaaS solutions are better suited than IaaS solutions, which usually stop doing their work of providing infrastructure elements like compute, storage and networking services.
Does that mean IaaS solutions are not suited for being integrated into a continuous delivery pipeline? No, they are suited, but you need some post-processing steps to tranform simple IaaS services (for example, isolated virtual machines) into a platform that can be used for application deployment purposes.
IBM provides a predefined integration between IBM UrbanCode solutions and its own PaaS solutions, specifically those solutions that embed the concept of cloud patterns (which you can think of as a codified reference architecture describing an overall platform). Cloud solutions embedding the cloud pattern concept are IBM SmartCloud Orchestrator, IBM PureApplication System, IBM Workload Deployer or IBM SmartCloud Application Services. The pattern description (infrastructure description) is imported in a unified model to join application and infrastructure information.
Any cloud solution (IBM or non-IBM) can be integrated into IBM UrbanCode Deploy as long as it provides appropriate interfaces that can be leveraged to provision cloud services from a script. I’ll give you some examples for integrating IBM UrbanCode Deploy with IBM SoftLayer as the cloud solution soon.
In my next post I will start to detail how IBM is technically integrating its various cloud solutions into IBM UrbanCode Deploy for implementing a continuous delivery pipeline. Specifically, the integration to pattern-based PaaS solutions like IBM SmartCloud Orchestrator, IBM Pure Application System and the IaaS solution IBM SoftLayer will be described.
Share your comments below, and please stay tuned to learn more.
IBM Executive IT Architect, Cloud Architecture