The following section includes a detailed description on how the artifacts in Stratos are related and linked to each other:

The following diagram shows the artifact correlation in Stratos:

IaaS Provider

Infrastructure as a Service (IaaS) provides virtualized computing resources over the Internet. Apache Stratos can be deployed on any IaaS that supports jclouds, such as EC2, OpenStack, GCE, and CloudStack. Stratos can also be deployed on Docker with the use of Kubernetes and CoreOS. In addition Stratos provides a Mock IaaS.

The Mock IaaS feature in Stratos simulates the basic features that Stratos requires from an IaaS. Thereby, providing a cost effective way of trying out Stratos. For information on Mock IaaS, see Working with the Mock IaaS

Kubernetes Cluster

A Kubernetes Cluster is a collection of Docker hosts, and a set of management features for running Docker containers in a clustered environment. A Kubernetes Cluster contains node agents (minions) and master components. Kubernetes creates a cluster of Docker hosts to provide high availability for the Docker containers. An API is provided to manage the containers.

Why is a Kubernetes Cluster needed?

A Kubernetes Cluster manages the clusters you create. Clusters are the compute resources on top of which your containers are built. 

How does a Kubernetes Cluster work?

Network partition

A partition depicts the division in an IaaS and defines an area of an IaaS cloud used by a service subscription. A network partition is an area of an IaaS that is bound by one network of an IaaS. Therefore, it is possible to include one or more partitions inside a network partition. Network partitions use private IPs for internal communication.

Why is a network partition needed?

A network partition manages the network partitions and the partitions you create. It allows you to map to an IaaS by defining the the IaaS provider.

How does a network partition work?

Deployment policy

A deployment policy defines how (such as, which partition algorithm to use) and where to spawn cartridge instances, and it also defines the maximum instances that are allowed in a service cluster. DevOps define deployment policies based on deployment patterns. You need to add the network partitions, which you plan on referring to in a deployment policy, prior to adding a deployment policy.

Why is a deployment policy needed?

A deployment policy manages policies which specify the cartridge deployment in partitions. It defines how to use a network partition and how to deploy a cartridge in a network partition.

How does a deployment policy work?

Auto-scaling policy

An auto-scaling policy defines the threshold values pertaining to scaling up and scaling down decisions. Auto-scaler will refer to the auto-scaling policy that is defined by DevOps. 

Why is an auto-scaling policy needed?

An auto-scaling policy manages policies which specify the auto-scaling threshold values.

How does an auto-scaling policy work?

Application policy

An application policy defines the application availability in network partitions. Thereby, it would define whether to start the application in all the network partitions or whether to carryout cloud bursting. 

Why is an application policy needed?

An application policy manages policies which specify how to deploy an application in a selected network partition.  It defines which network partition is required to deploy an application and its algorithm.

How does an application policy work?

Cartridge

A cartridge is a container for a framework, load balancer or data management system. You can add a cartridge in a platform as a service (PaaS) for scalability. In Stratos, cartridge runtimes create service runtimes. For example, if you want to have a PHP runtime, you can use a PHP cartridge to get the runtime to deploy your PHP application. A cartridge can be fully configured with all the software and configurations, or  zero configured where the cartridge user can install  and configure what they want. 

Why is a cartridge needed?

A cartridge manages single-tenant and multi-tenant cartridges. It is required to have at-least one cartridge for you to create an application.

How does a cartridge work?

Cartridge group

A cartridge group defines the relationship among a set of cartridge groups and a set of cartridges. The relationship among the children of a group can be the startup order, termination behavior and any scalable dependencies. Writing a cartridge group definition provides the ability to re-use the same frequently used cartridges as needed in different composite applications. The cartridges that correspond to a cartridge group have to be added to Stratos before the cartridge group is added. 

Why is a cartridge group needed?

A cartridge group manages the cartridge groups created using a set of cartridges.

How does a cartridge group work?

Application

The application provides the actual data required to create the clusters, start the instances and specifies how to connect them in the run-time.