Orchestration

Agenda

Topics

Orchestration

Requirements

Minimum Configuration

Minimum Components

Introspection

Logs

Metrics

Fine-grained States

Availability First

Requirements

What we have?

Vagga

Containers for dev.env.

Vagga

$ git clone git@host:proj
$ cd proj
$ vagga
Available commands:
  run   Start app with postgres and redis
  doc   Build docs with sphinx
  test  Run unit tests
  js    Compile javascripts

Example 1

$ vagga run
Okay, server started at http://localhost:8080

Example 2

$ vagga doc
Installing sphinx
...
Docs are built in doc/_build/html/index.html

Example 3

$ git pull
$ vagga test
Requirements txt changed
Rebuilding container "test"
................
Ok 20 successful

Vagga

Lithos

Production-grade containers

Lithos

Lithos

Lithos

Configuration files

introspection

security

Lithos: Security

(*) You control only version and number of instances

Lithos: Day 0

Cantal

Monitoring

Metrics

Cantal

Cantal

Cantal: Network

Cantal

resource_manager1.svg

Cantal

resource_manager2.svg

Cantal: Rust

3k-10k metrics in 10-40ms

1h in 15-35MiB

Debug build

Verwalter

Cluster-wide Scheduling

Verwalter

Metrics -> Config

Verwalter

  • 10 Django

  • 1 Posgres

  • 1 Nginx

  • jupyter 5D

  • mars 3D 1N

  • pluto 2D 1P

Verwalter

< 10K rpm

> 10K rpm

Django

10

20

Celery

5

2

Verwalter

Verwalter: Input

Verwalter: Election

Raft-like protocol

No fsync

Low Traffic

Consistency

Verwalter: Lua

Verwalter: Lua

  • 10 Django

  • 1 Posgres

  • 1 Nginx

  • jupyter 5D

  • mars 3D 1N

  • pluto 2D 1P

7.5K rpm

Verwalter: Lua

Monolithic scheduler

Verwalter: Render

JSON

Handlebars -> nginx.conf

nginx -t

nginx -s reload

Verwalter: Feedback

10 Djangos → 5 Running, 77 Err/sec → 1 min → Blacklist

MetSchMetSch

Overall

boxes.svg

Plans

Plans

Multi-DC

cross-data-center.svg

Questions?