Schedule jobs across a cluster. Like Kubernetes, but more turnkey maybe? I dunno.
dhasenan 9be4f00c96 rearrange a bit 1 year ago
api Basic service go! 1 year ago
docs Basic service go! 1 year ago
source/stratos rearrange a bit 1 year ago
.gitignore Notes and some RPC bits 1 year ago
README.md Basic service go! 1 year ago
dub.json OS info + upnp work 1 year ago
dub.selections.json OS info + upnp work 1 year ago

README.md

Stratos

What is it?

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:

Scheduling

Define jobs and when they should run. Then they’ll run. End of story.

Cluster discovery

To set up a cluster, you simply install Stratos on each host. You don’t need any configuration; it just works.

Service discovery

Stratos comes out of the box with a DNS server allowing you to find where each job is running.

Load balancing

Stratos will load balance network requests for you.

Process isolation

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.

Why not Mesos?

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.

Why not Kubernetes?

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.