This chapter explains what ICM does, how it works, and how it can help you deploy InterSystems IRIS Data Platform configurations on cloud, virtual, and physical infrastructure.
InterSystems Cloud Manager (ICM) provides you with a simple, intuitive way to provision cloud infrastructure and deploy services on it. ICM is designed to bring you the benefits of infrastructure as code (IaC), immutable infrastructure, and containerized deployment of your InterSystems IRIS™-based applications, without
requiring you to make major investments in new technology and the attendant training and trial-and-error configuration and management.
ICM makes it easy to provision and deploy the desired InterSystems IRIS configuration on Infrastructure as a Service (IaaS) public cloud platforms, including Google, Amazon, and Azure. Define what you want in plain text configuration files and use the simple command line interface to direct ICM; ICM does the rest, including provisioning your cloud infrastructure with the widely-used Terraform IaC tool and deploying your InterSystems IRIS-based applications on that infrastructure in Docker containers.
ICM codifies APIs into declarative configuration files that can be shared among team members like code, edited, reviewed, and versioned. By executing Terraform commands as specified by these files, ICM enables you to safely and predictably create, change, and improve production infrastructure on an ongoing basis.
ICM Makes It Easy
Using ICM lets you take advantage of the efficiency, agility, and repeatability provided by virtual and cloud computing and containerized software without major development or retooling. The InterSystems IRIS configurations ICM can provision and deploy range from a stand-alone instance, through load-balanced application servers connected to a data server in a distributed cache cluster, to a basic or complex sharded cluster. ICM can also deploy InterSystems IRIS on existing virtual and physical clusters.
Even if you are already using cloud infrastructure, containers, or both, ICM dramatically reduces the time and effort required to provision and deploy your application by automating numerous manual steps based on the information you provide. And the functionality of ICM is easily extended through the use of third-party tools and in-house scripting, increasing automation and further reducing effort.
Each element of the ICM approach provides its own advantages, which combine with each other:
ICM exploits these advantages to bring you the following benefits:
Automated provisioning and deployment, and command-line management, of large-scale, cloud-based InterSystems IRIS configurations.
Integration of existing InterSystems IRIS and InterSystems IRIS-based applications into your enterprise’s DevOps toolchain.
Increased agility through fast reprovisioning and redeployment when required.
Stability, robustness, and minimization of risk through easy versioning of both the application and the environment it runs in.
The role of ICM in the application lifecycle, including its two main phases, provision
, is shown in the following illustration:
Role of ICM in the Application Lifecycle
ICM’s configuration files, as provided, contain almost all of the settings you need to provide to provision and deploy the InterSystems IRIS configuration you want. Simply define your desired configuration in the appropriate file, as well as specifying some details such as credentials (cloud server provider, SSH, SSL/TLS) , InterSystems IRIS licenses, types and sizes of the compute nodes you want, and so on. (See Define the Deployment
In this document, the term compute node
is used to refer to a virtual host provisioned either in the public cloud of one of the supported cloud service providers or in a private cloud using VMware vSphere.
ICM supports three main provisioning activities: the creation (provisioning), configuration, and destruction (unprovisioning) of compute nodes and associated resources in a cloud environment.
ICM carries out provisioning tasks by making calls to HashiCorp’s Terraform. Terraform is an open source tool for building, changing, and versioning infrastructure safely and efficiently, and is compatible with both existing cloud services providers and custom solutions. Configuration files describe the provisioned infrastructure. (See Provision the Infrastructure
Although all of the tasks could be issued as individual Terraform commands, executing Terraform jobs through ICM has the following advantages over invoking Terraform directly:
|Terraform Executed Directly
||Terraform Executed by ICM
Configures each type of node in sequence, leading to long provisioning times
Runs multiple Terraform jobs in parallel to configure all node types simultaneously, for faster provisioning
Does not provide programmatic access (has no API)
Provides programmatic access to Terraform
Defines the desired infrastructure in the proprietary HashiCorp Configuration Language (HCL)
Defines the desired infrastructure in a generic JSON format
ICM also carries out some postprovisioning configuration tasks using SSH in the same fashion, running commands in parallel on multiple nodes for faster execution.
ICM deploys prebuilt InterSystems IRIS images in Docker containers on the compute nodes it provisions. These containers are platform-independent and fully portable, do not need to be installed, and are easily tunable. ICM itself is deployed in a Docker container. A containerized application runs natively on the kernel of the host system, while the container provides it with only the elements needed to run it and make it accessible to the required connections, services, and interfaces a runtime environment, the code, libraries, environment variables, and configuration files.
Deployment tasks are carried out by making calls to Docker. Although all of the tasks could be issued as individual Docker commands, executing Docker commands through ICM has the following advantages over invoking Docker directly:
ICM runs Docker commands across all machines in parallel threads, reducing the total amount of time to carry out lengthy tasks, such as pulling (downloading) images.
ICM can orchestrate tasks, such as rolling upgrades, that have application-specific requirements.
ICM commands let you interact with and manage your infrastructure and containers in a number of ways. For example, you can run commands on the cloud hosts or within the containers, copy files to the hosts or the containers, upgrade containers, and interact directly with InterSystems IRIS.