Our job is too hard:
Tricks we can use
M18 LightKone
Maastricht
Vitor Enes
June 13, 2018
2
Outline
3
what we talk about
when we talk about
experiments...
5
We’ll get these for free!!!
“A survey of general-purpose experiment
management tools for distributed systems” (2014)
let’s try to do that...
Infrastructure as Code (IaC)
write code to:
the infrastructure can be quickly created/recreated based on a
“configuration” that is version controlled,
along with the application itself
8
it’s time for
Experiments as Code
(EaC)
Experiments as Code (EaC)
write code to:
NOT write code to:
10
Typically we write these!
(over and over)
with this mindset...
Goal: Ring App
12
Goal: Ring App
12
Tricks we can use...
Tricks (tool)
15
16
Tricks
Driver API
Driver API
17
// connect to Tricks
Tricks tricks = Tricks.init();
// non-blocking discovery
tricks.discovery(tag);
// blocking discovery
tricks.discovery(tag, count);
// register event
tricks.registerEvent(name);
// wait for event
tricks.waitEvent(name, count);
Ring App
Configuration of pods is achieved through environment variables:
18
apiVersion: v1
experiment:
- tag: server
image: vitorenesduarte/ring-server
replicas: 6
Tricks
Ring App
19
// server code
// blocking discovery: id -> pod information
Map<Integer, Pod> pods = tricks.discover(“server”, 6);
// form a ring
Integer id = tricks.getConfig().getPodId();
Pod left = ...
Pod right = ...
Ring App
20
// server code
Pod left = ...
Pod right = ...
- tag: client
image: vitorenesduarte/ring-client
replicas: 6
workflow:� start:� name: server-connected
value: 6
apiVersion: v1
experiment:
- tag: server
image: vitorenesduarte/ring-server
replicas: 6
// network stuff
connect(left);
connect(right);
tricks.registerEvent(“server-connected”);
Ring App
21
// client code
// block until
tricks.waitEvent(“server-connected”, 6);
apiVersion: v1
experiment:
- tag: server
image: vitorenesduarte/ring-server
replicas: 6
- tag: client
image: vitorenesduarte/ring-client
replicas: 6
does this make any sense?
RiseML: Automate DL Experiments
23
Metaparticle: Language-Agnostic Library
24
Reproduce your own experiments
(the script was developed in a Linux machine;
running it in MacOS resulted in a BUG!)
25
YCSB++: Synchronization Barrier using ZK
26
Side note: ”SPLAY: Distributed Systems Evaluation Made Simple”
(NSDI’ 09)
Kubernetes prediction
27
what’s next?
Next
Features
Save money!
Tricks
30
M18 LightKone - Maastricht
Questions?�Why don’t you want to use Tricks?
Vitor Enes
vitorenesduarte@gmail.com
@vitorenesduarte