Integration of COTS with the Cloud; Docker, Containers and APIs.
Cloud management systems have varied capabilities to provision and administer industry-leading commercial off-the-shelf (COTS) and custom software products. It is this ability to quickly add applications to the cloud management system— and thus make them available to customers—that differentiates a powerful, robust cloud management system from an average one.
There are two primary types of applications cloud management systems support: COTS and customer “homegrown” applications.
COTS are widely sold and distributed products that cloud providers might install into their datacenters, using the cloud management platform to manage them all. When customers order one of these SaaS offerings, the management system has usually been preprogrammed with a “module” that knows how to provision, automatically configure, and integrate using APIs with the COTS application. As each software vendor releases new versions in the future, the cloud management platform vendor must also update its integration module or API to keep up. The cloud customer is not aware of these continuous upgrades unless new user interfaces or features appear in the self-service control panels.
It is when a provider wants to integrate a custom homegrown application— or some legacy customer-owned application—into the cloud that you can use or develop an integration module so that the environments can communicate with each other. Maybe the customer has a finance application that it would like deployed to the cloud; in this scenario, the cloud provider will migrate the application and data, but it will also have to utilize a module so that automated provisioning, billing, reporting, and the self-service control panels are functional. The customer simply sees an additional tab or icon on its cloud control panel called, for example, “finance application.”
By integrating all the custom and COTS applications, the cloud management system gives both the provider and the customer support staff a single management console for all cloud and application configuration and administration. This is very important: without this single unified cloud management console integrating everything, the cloud provider’s support personnel would have dozens of different software tools, one for each application, that they would need to use every time they wanted to create a new user or perform routine administrative tasks.
EXTENDING THE SYSTEM VIA API’S
You can use cloud management platforms to access and control the cloud by integrating with third-party applications and software systems through an application programming interface (API). APIs are the means by which cloud management platform can access and initialize commands or tasks into other software applications. Just as with a workflow-orchestrator, the cloud provider can create its own programs to do mass import, exports, or other tasks using the API features of the cloud management system. The purpose of an API is to allow integration and exchange of automated commands between multiple applications and, in the case of cloud, the cloud management platform.
In a hybrid cloud environment, APIs are also utilized to integrate with external XaaS providers. The cloud management platform will normally have a library of premade modules that use APIs with multiple cloud providers, applications, and future as-yet-unknown cloud providers and XaaS offerings. Cloud brokering, also relies heavily on APIs between cloud providers.
SOFTWARE PACKAGING/CONFIGURATION MANAGEMENT TOOLS
Cloud management platforms control the overall processes and workflows within a cloud through their automation and orchestration features. However, there are numerous other software packaging and software configuration management tools that you can use, as well. These tools, such as Puppet and Chef, are popular open source software configuration management tools that are commonly used in modern datacenters. Both of these tools have server-based applications with distributed agents on other target computers throughout the chosen network.
Systems administrators specify the desired software state (e.g., software applications and patches) for each target server/host machine and the Puppet/Chef soft- ware will update each target system automatically based on configurable rules and parameters. Both tools support multiple programming languages and techniques for even more advanced software installations.
Another type of software packaging tool that has gained significant popularity is the open source product called Docker. Docker is an application containerization technique with which you can package and run software programs in a virtualized memory compartment within any server and OS that runs the Docker [Application] Engine. These “Dockerized” applications are in theory portable and would run on any server or operating system without the need to be recompiled. They mimic in part the JVM within Java. Docker containers are OS specific and are not a replacement for VMs.
There are other tools with which you can package applications into self- installing modules that can also be integrated into the orchestration system of a cloud management platform. These tools vary by software vendor, but they can use a combination of sequential scripts, state/image capturing, or programming tools to intelligently install software onto target servers/hosts in the cloud or data- center. By using these tools, you can greatly simplify and automate the distribution of software and updates across any number of systems—a level of automation that is critical for a cloud or any modern datacenter environment.
It is important to note that although a cloud management platform has its own automation and orchestration system, with workflow, scripting, and service design capabilities, you can easily integrate third-party software tools such as Puppet, Chef, and Docker. There is no need to re-create software installation scripts from these third-party tools into the orchestration; simply make calls out to the external tool through the orchestrator API.