Mykhailo Lieibenson
Some web dude interested in JS, Nginx, Node.js, NW.js, WebRTC, distributed systems and DevOps to support development (SDLC).
OpenStack and CloudStack have many things in common incl. VMs
VMs give you enough flexibility by pretty much letting you to emulate whatever machine and run whatever OS on it.
But you pay high price for it - performance penalties.
Also it doesn't allow you to utilize resources fully.
Too many software components to be installed and managed*
* OpenStack: Nova, Neutron, Cinder, Keystone, Glance, Swift, Horizon, Ceilometer, Magnum
** Apache CloudStack doing better in this sense
Provides capabilities to run docker cluster.
100% docker API compatible.
Docker Machine can be used to provision docker instances.
Docker Compose can be used to orchestrate several images/nodes.
Relies on external tools for service discovery: zookeeper, etcd, consul.
Provides failover.
Provides capabilities to define constraints.
Pretty low level.
Requires many "manual" steps and custom scripts to be automated.
Tooling around Docker Swarm is still missing.
No web UI out of the box but can be solved by project Shipyard.
CLI
Mesos is datacenter kernel OS.
Built using proven technologies and in production since 4 years.
Provides ways to manage cluster.
Provides self healing.
CLI.
IaaS
Metal
OnPrem
Mesos
PaaS
SaaS
Provision and manage machines
Build & run frameworks using resources
Deploy and manage applications and services
Provide customer services
Mesos consists of master(s), slaves, scheduler, executors, resources and frameworks.
Master
Standby Master
Standby Master
Zookeeper quorum
Task
Slave
Executor
Task
Slave
Executor
...
Scheduler
Node
Node
Node
Node
Mesos
Marathon
DCOS
Aurora
K8s
Frameworks
...
Applications
App
App
Marathon is a scheduler which provides REST API and Web UI.
Does orchestration and health checks.
Also does service discovery via Marathon-LB (HAProxy)
or Mesos-DNS.
Zookeeper, etcd or consul can be used as well.
Mesos provides resources and labels and Marathon applies constraints to pin apps to instances or colocate them (if needed).
Marathon alternative.
Main differences are that Aurora has DSL to define state-machine-like orchestration (i.e. deploy 10 instances and in case only 7 was deployed - rollback)
DCOS being developed by Mesosphere.
Same company behind Marathon.
Provides better UI to Mesos, CLI, package centre, extra features.
Has enterprise version.
Does pretty much the same as Mesos and implements same idea.
Does not require external scheduler (i.e. Marathon)
Manages cluster of Pods - Mesos Slave aka Node
Provides self-heal
Provides labels
Each Pod gets own IP
Service - LB endpoint for a Pod so it can be accessed from outside.
Very powerful CLI
Feature rich deployment, rollback and orchestrations strategies.
Container agnostic and can run rkt (Rocket) by CoreOS using Tectonic.
K8s can run on Mesos.
Cluster still needs machines so with Terraform we will be able to provision them.
And of course any of listed solutions should be installed so thats where Ansible kicks in.
And don't forget about app configuration.
Bound to docker and love a lot of control?
Docker Swarm
Want to have cluster and have PaaS focus?
Apache Mesos
Doesn't care about container tech and want to focus on app orchestration?
Kubernetes
For all of these solutions we would need to have Docker Registry to run somewhere since we wanna pack our applications in containers.
How do we wanna configure out apps?
Should we build self contained apps with backed in configuration?
Or should we have configuration pulled from a server on container start?
How do we develop locally?
Should we run whole cluster?
Should we just run boot2docker and docker containers?
Which solution to pick?
By Mykhailo Lieibenson
Some brainstorming ideas for the future of our infrastructure. Input for open discussion.
Some web dude interested in JS, Nginx, Node.js, NW.js, WebRTC, distributed systems and DevOps to support development (SDLC).