InterSystems IRIS: A Cloud-First, Unified Data Platform
InterSystems IRIS is a complete, cloud-first, unified data platform that enables organizations to rapidly develop, deploy, and maintain real-time, data-rich solutions. Unlike other approaches that require implementing and integrating multiple technologies, InterSystems IRIS provides many of the critical capabilities required by solution developers in a single product, including:
- Multi-workload (simultaneous transactional and analytic) database management capabilities;
- Multi-model (relational, multidimensional, object, and document) database management capabilities;
- A comprehensive interoperability platform for integrating disparate data silos and applications; and
- Structured, unstructured, and open analytics capabilities supporting both batch and real-time use cases.
InterSystems IRIS supports and automates deployment to various environments. These capabilities enable organizations to deploy applications flexibly and quickly, scale out and in as needed, and adopt Continuous Integration and Delivery (CI/CD), DevOps, and other agile methodologies.
InterSystems Cloud Manager
InterSystems Cloud Manager (ICM) is included with InterSystems IRIS, and provides a simple, intuitive way for users to provision and deploy services on a variety of virtual and physical clusters.
ICM delivers the benefits of Infrastructure as Code (IaC), immutable infrastructure, and containerized deployment of InterSystems IRIS-based applications. ICM allows organizations to take advantage of the efficiency, agility, and repeatability provided by cloud environments and containerized software without major development or retooling.
ICM delivers the following features and benefits:
- Automated provisioning and deployment, as well as command line management of large-scale, cloud-based InterSystems IRIS configurations;
- Integration of InterSystems IRIS-based applications into an enterprise’s DevOps toolchain;
- Increased agility through fast reprovisioning and redeployment when required; and
- Stability, robustness, and minimization of risk through easy versioning of both the application and the environment it runs in.
ICM can provision virtual compute nodes and associated resources on the following platforms:
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- Microsoft Azure
- VMware vSphere
- Pre-existing virtual and bare-metal environments
ICM Lifecycle Phases
The role of ICM in the application lifecycle is shown in the following illustration:
Each ICM deployment is defined by the contents of JSON-formatted configuration files. These files contain almost all of the settings needed to provision and deploy InterSystems IRIS configurations. Once the desired types and quantities of the compute nodes and other details, such as security credentials, InterSystems IRIS licenses, and so on, are specified, ICM is ready to begin the provisioning phase.
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 integrating and leveraging 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.
ICM complements Terraform in the following ways:
- ICM runs multiple Terraform jobs in parallel to configure all node types simultaneously, for faster provisioning;
- ICM provides programmatic access to Terraform using Java;
- ICM defines the desired infrastructure in a generic JSON format.
ICM also carries out some post-provisioning 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. These elements include 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.
ICM complements Docker in the following ways:
- ICM runs Docker commands across all machines in parallel threads, reducing the total amount of time to carry out lengthy tasks, such as downloading images;
- ICM can orchestrate tasks such as rolling upgrades that have application-specific requirements.
ICM enables users to interact with and manage both provisioned cloud nodes and the containers deployed on them in a number of ways. For example, they 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.
Along with running single commands on multiple nodes concurrently, ICM provides the ability to interactively manage individual nodes in the deployment on several levels. For example, users can:
- Open a shell on a compute node to interact with its operating system;
- Open a shell inside a container to interact with its operating environment;
- Open an InterSystems IRIS secure session directly to a running InterSystems IRIS instance.
Business Drivers for Cloud Deployment
Adoption of Infrastructure as a Service (IaaS) continues to accelerate as organizations increasingly deploy new and existing applications and workloads to the cloud. Gartner1 predicts revenues for the worldwide public cloud services market to reach $186.4B in 2018, as organizations realize multiple operational and strategic benefits from cloud infrastructure, including:
- Increased agility with reduced risk. The separation of components and ease of versioning provided by IaaS and containerization makes deployment repeatable and reliable while reducing effort.
- Lower TCO and startup costs. IaaS can be utilized in a cost efficient manner — for example, to provision resources only as they are needed.
- Flexible scaling. Scaling vertically and horizontally is faster and easier in the cloud, and capacity can be continuously adjusted as workloads change.
- Support for hybrid deployments. On-premises and data center deployments can spill over to public and private cloud infrastructure as needed.
- Support for Continuous Integration and Delivery (CI/CD) and DevOps methodologies. Containers provide clean movement of an application from development to test and to production, and separate the build phase from the run process, supporting on-demand application delivery while promoting integration with DevOps toolchains.
A container image is a lightweight, stand-alone, executable package that includes a piece of software and everything needed to run it: code, runtime, system tools, system libraries, and settings. A container is a running instance of a container image.
Container images package applications into platform-independent, fully portable runtime solutions, with all dependencies satisfied and isolated, that can be executed whenever a container is needed. This allows a developer to move a containerized application easily between environments — for example, from development to test and to production — reducing conflicts among departments with different objectives. For example, developers can focus on their latest code and libraries while operations engineers can concentrate on the overall solution infrastructure including networking, high availability, data durability, and so on.
By the same token, containerization provides the agility and repeatability needed to revolutionize the way many organizations respond to business and technology needs. Containers cleanly separate the application provisioning process, including the build phase from the run process, and allow an organization to adopt a uniform application delivery approach, including a more agile delivery methodology (e.g., DevOps) and architecture (e.g. microservices).
By cleanly separating code and data, containers allow seamless deployment of both the application and its environment on immutable software-provisioned infrastructure. This makes application deployment and upgrades fast and easy, reduces the risks and costs associated with infrastructure updates, and supports ease of use and DevOps adaptation. Organizations can deploy InterSystems IRIS based solutions using InterSystems IRIS container images provided by InterSystems, and can add applications to InterSystems IRIS container images to deploy integrated containers.
A containerized application, while remaining wholly within the container, does not run fully on the operating system (OS) on which the container is running, nor does the container hold an entire operating system for the application to run on. Instead, an application in a container runs natively on the kernel of the host system, while the container provides 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.
Because it packages only these elements and executes the application natively, a container is very efficient, running in a discrete, manageable process that takes no more memory than any other executable. At the same time, it is fully portable, remaining completely isolated from the host environment, accessing local files and ports only if configured to do so. Simultaneously, it provides standard, well-understood application configuration, behavior, and access. It doesn’t matter what physical, virtual, or cloud systems and OS platforms Linux-based InterSystems IRIS containers are running on; users can interact with them all in the same way as they would with traditional InterSystems IRIS instances running on Linux systems.
Deploying Sharded InterSystems IRIS Architectures with ICM
ICM supports sharded2 (as well as non-sharded) InterSystems IRIS architectures. ICM provisions and deploys the required data servers, application servers, shard servers, web servers, and load balancers as needed, as well as arbiter nodes for mirrored configurations.
Data servers can be mirrored to provide high availability for data. In a sharded cluster, the shard master (storing non-sharded data) and the shard data servers (storing sharded data) can both be mirrored.
The use of InterSystems IRIS with InterSystems Cloud Manager can enable organizations to leverage cloud infrastructure and advanced deployment methods more easily and adopt new software engineering processes to simplify the development, deployment, and maintenance of real-time, data-rich solutions. InterSystems technology can help organizations increase agility and flexibility, and reduce risk and costs without sacrificing performance, scalability, reliability, or security.
InterSystems is the engine behind the world’s most important applications. In healthcare, finance, government, and other sectors here lives and livelihoods are at stake, InterSystems is the power behind what matters. Founded in 1978, InterSystems is a privately held company headquartered in Cambridge, Massachusetts (USA), with offices worldwide, and its software products are used daily by millions of people in more than 80 countries.
For more information, visit InterSystems.com/IRIS
1 - Gartner Forecasts Worldwide Public Cloud Revenue to Grow 21.4 Percent in 2018, April 2018
2 - A database shard is a horizontal partition of data in a database.