Stratos lets you define a job and have it keep running on schedule or continually across a cluster. You can ignore which machine has which applications running on it; you just tell the cluster to run a job.
It’s in the same vein as Mesos or Kubernetes.
In more detail, it provides:
Define jobs and when they should run. Then they’ll run. End of story.
To set up a cluster, you simply install Stratos on each host. You don’t need any configuration; it just works.
Stratos comes out of the box with a DNS server allowing you to find where each job is running.
Stratos will load balance network requests for you.
Though perhaps not as robust to Docker, Stratos (by v1) will offer process isolation, ensuring that your processes don’t exceed resource limits or access data or devices they should not have access to.
To set up Mesos, you need to set up a special master cluster, a Zookeeper cluster, and then agents. That’s six or eight machines that will have limited utilization but are essential. If you’ve only got a few machines total, that’s a problem. Setting it up is also kind of hairy.
You also need to set up Marathon and Chronos on your master cluster.
Zookeeper can’t discover other Zookeeper nodes. Nor can Mesos. So if you need to add one Zookeeper instance, you need to update all existing instances.
This adds up to an annoying maintenance cost.
By comparison, you could just install the Stratos service on each node in your cluster and be done with it. You don’t have to configure them to indicate where to find other Stratos instances; it’s automatic.
The downside is that all nodes participate in cluster administration tasks. This is a good default for small clusters, but it’s a problem for larger clusters. In v2, we’ll work on an option for separating out a leader cluster, but until then, a cluster of hundreds of nodes won’t work as well with Stratos as Mesos.
Kubernetes is giant and complex, and it depends on Docker, which is also kind of complex. Stratos v1 will not support Docker natively.
This is an advantage for Kubernetes when you have strict isolation requirements or complex dependencies.