Clocker 
Evolu,on 
Andrew 
Kennedy, 
SVDevOps, 
09 
September 
2014
Introduc>on 
• Andrew 
Kennedy 
– CloudsoA 
– SoAware 
Engineer 
– Open 
Source 
and 
Java 
– Cloud 
Technologies 
• Overview 
– Docker 
– Brooklyn 
– Clocker
Docker 
• Popular 
– Huge 
Ecosystem 
– Growing 
• Some 
Pain 
Points 
– Networking 
– Orchestra>on 
– Applica>ons
Docker
Brooklyn 
• Brooklyn 
– Applica>on 
Management 
PlaPorm 
– Autonomic 
Compu>ng 
• Applica>on 
Blueprint 
– Services 
(En>>es) 
– Configura>on 
– ATributes 
(Sensors) 
– Ac>ons 
(Effectors)
Brooklyn 
• Deploy 
– Provisioning 
– Download 
– Install 
– Configure 
• Manage 
– ATributes 
– Policies 
– Ac>ons
Brooklyn 
Blueprint 
id: 
nodejs-­‐hello-­‐world-­‐application 
name: 
"Node.JS 
Hello 
World 
Application" 
origin: 
"https://github.com/grkvlt/node-­‐hello-­‐world.git/" 
locations: 
-­‐ 
jclouds:softlayer:ams01 
services: 
-­‐ 
serviceType: 
brooklyn.entity.webapp.nodejs.NodeJsWebAppService 
id: 
nodejs 
name: 
"Node.JS" 
brooklyn.config: 
gitRepoUrl: 
"https://github.com/grkvlt/node-­‐hello-­‐world.git" 
appFileName: 
app.js 
appName: 
node-­‐hello-­‐world
Brooklyn 
En>>es 
• Service 
(Micro?) 
• Many 
OSS 
and 
ASF 
Projects 
– Couchbase 
– Cassandra 
– Tomcat 
– Solr 
• Control 
Servers 
via 
SSH 
• Control 
En>>es 
via 
Effectors
Clocker 
• Brooklyn 
plus 
Docker 
• Docker 
Host 
– Docker 
Engine 
Installa>on 
– REST 
API 
Access 
Using 
jclouds 
1.8.0 
Docker 
Driver 
– Virtual 
Machine 
Access 
Using 
SSH 
– Cluster 
of 
Containers 
• Docker 
Container 
– Running 
Services 
and 
Commands 
for 
En>ty 
– Dockerfiles
Clocker
Clocker 
• Demand 
Side 
– Create 
a 
New 
Container 
– Resize 
Cluster 
of 
En>>es 
– AutoScaler 
Policy 
ATached 
to 
Cluster 
• Supply 
Side 
– Placement 
Strategies 
for 
Containers 
– Depth 
or 
Breadth 
First 
– Affinity 
Rules 
– Resource 
Alloca>on 
(CPU 
Shares, 
Load, 
Memory, 
…)
Clocker 
• Applica>on 
Deployment 
– CAMP 
Blueprint 
in 
YAML 
– Java 
Classes 
– Mostly 
Unchanged 
• Docker 
Specific 
Configura>on 
– Affinity 
Rules 
or 
Placement 
Strategy 
– Dockerfile 
or 
Image 
ID 
– CPU 
or 
Memory 
Shares 
– Docker 
Volumes
Demonstra>on 
Deploying 
Applica>ons 
on 
Clocker
Clocker 
Evolu>on 
• Three 
Months 
• Simple 
Applica>ons 
– Tomcat 
– Node.JS 
– Ac>veMQ 
• Strengthening 
Core 
• Docker 
Driver 
for 
jclouds 
– More 
Features
Limita>ons
Limita>ons 
• Docker 
– Seamless 
Mul> 
Host 
Networking 
• Clocker 
– Complex 
Applica>on 
Requirements 
– Not 
just 
a 
VM 
and 
a 
service… 
• Features 
– Requests 
from 
Users?
Clocker 
Roadmap 
• Orchestra>on 
– Placement 
Strategy 
• More 
Intelligence 
– Need 
32GiB 
Container? 
– Need 
32 
1GiB 
Containers 
per 
Host? 
– One 
Core? 
– 16 
Cores? 
• User 
Defined 
Strategies
Clocker 
Roadmap 
• Applica>on 
Defini>ons 
– Use 
YAML 
Blueprints 
– Include 
Dockerfiles 
and 
Images 
– Docker 
Hub 
– Third 
Party 
Repositories 
– Enterprise 
Repositories 
• Other 
Defini>ons
Clocker 
Roadmap 
• Networking 
– Mul>ple 
Hosts 
– Mul>ple 
Clouds? 
• Communica>on 
– Port 
Forwarding 
– Doesn’t 
Always 
Work 
• SoAware 
Defined 
Networking 
– Weave
Clocker 
Roadmap 
• Integra>ons 
– Kubernetes 
– Fig 
– libswarm 
– Decking 
– Panamax 
– Stampede 
– Others?
Summary 
• Docker 
Containers 
– En>>es 
are 
Micro 
Services 
• Limita>ons 
– Mul>ple 
Hosts 
and 
Networking 
• Clocker 
Solu>ons 
– Applica>on 
Blueprints 
– Orchestra>on 
– Networking
Project 
• GitHub 
– brooklyncentral/clocker 
– Java 
Code 
– Apache 
2.0 
Licensed 
• Contribu>ons 
– Blueprints? 
– Integra>ons? 
– Documenta>on? 
– Tes>ng?
Audience 
Ques>ons 
• Where 
do 
you 
see 
Docker 
networking 
going? 
• What 
about 
orchestra>on? 
• What 
features 
would 
be 
most 
useful 
to 
enhance 
Docker 
usability?
Thanks 
• Ques>ons?
Web 
Resources 
http://clocker.io/ 
http://brooklyn.io/ 
http://docker.io/ 
http://github.com/zettio/weave/ 
http://abstractvisitorpattern.co.uk/

Clocker Evolution

  • 1.
    Clocker Evolu,on Andrew Kennedy, SVDevOps, 09 September 2014
  • 2.
    Introduc>on • Andrew Kennedy – CloudsoA – SoAware Engineer – Open Source and Java – Cloud Technologies • Overview – Docker – Brooklyn – Clocker
  • 3.
    Docker • Popular – Huge Ecosystem – Growing • Some Pain Points – Networking – Orchestra>on – Applica>ons
  • 4.
  • 5.
    Brooklyn • Brooklyn – Applica>on Management PlaPorm – Autonomic Compu>ng • Applica>on Blueprint – Services (En>>es) – Configura>on – ATributes (Sensors) – Ac>ons (Effectors)
  • 6.
    Brooklyn • Deploy – Provisioning – Download – Install – Configure • Manage – ATributes – Policies – Ac>ons
  • 7.
    Brooklyn Blueprint id: nodejs-­‐hello-­‐world-­‐application name: "Node.JS Hello World Application" origin: "https://github.com/grkvlt/node-­‐hello-­‐world.git/" locations: -­‐ jclouds:softlayer:ams01 services: -­‐ serviceType: brooklyn.entity.webapp.nodejs.NodeJsWebAppService id: nodejs name: "Node.JS" brooklyn.config: gitRepoUrl: "https://github.com/grkvlt/node-­‐hello-­‐world.git" appFileName: app.js appName: node-­‐hello-­‐world
  • 8.
    Brooklyn En>>es •Service (Micro?) • Many OSS and ASF Projects – Couchbase – Cassandra – Tomcat – Solr • Control Servers via SSH • Control En>>es via Effectors
  • 9.
    Clocker • Brooklyn plus Docker • Docker Host – Docker Engine Installa>on – REST API Access Using jclouds 1.8.0 Docker Driver – Virtual Machine Access Using SSH – Cluster of Containers • Docker Container – Running Services and Commands for En>ty – Dockerfiles
  • 10.
  • 11.
    Clocker • Demand Side – Create a New Container – Resize Cluster of En>>es – AutoScaler Policy ATached to Cluster • Supply Side – Placement Strategies for Containers – Depth or Breadth First – Affinity Rules – Resource Alloca>on (CPU Shares, Load, Memory, …)
  • 12.
    Clocker • Applica>on Deployment – CAMP Blueprint in YAML – Java Classes – Mostly Unchanged • Docker Specific Configura>on – Affinity Rules or Placement Strategy – Dockerfile or Image ID – CPU or Memory Shares – Docker Volumes
  • 13.
  • 14.
    Clocker Evolu>on •Three Months • Simple Applica>ons – Tomcat – Node.JS – Ac>veMQ • Strengthening Core • Docker Driver for jclouds – More Features
  • 15.
  • 16.
    Limita>ons • Docker – Seamless Mul> Host Networking • Clocker – Complex Applica>on Requirements – Not just a VM and a service… • Features – Requests from Users?
  • 17.
    Clocker Roadmap •Orchestra>on – Placement Strategy • More Intelligence – Need 32GiB Container? – Need 32 1GiB Containers per Host? – One Core? – 16 Cores? • User Defined Strategies
  • 18.
    Clocker Roadmap •Applica>on Defini>ons – Use YAML Blueprints – Include Dockerfiles and Images – Docker Hub – Third Party Repositories – Enterprise Repositories • Other Defini>ons
  • 19.
    Clocker Roadmap •Networking – Mul>ple Hosts – Mul>ple Clouds? • Communica>on – Port Forwarding – Doesn’t Always Work • SoAware Defined Networking – Weave
  • 20.
    Clocker Roadmap •Integra>ons – Kubernetes – Fig – libswarm – Decking – Panamax – Stampede – Others?
  • 21.
    Summary • Docker Containers – En>>es are Micro Services • Limita>ons – Mul>ple Hosts and Networking • Clocker Solu>ons – Applica>on Blueprints – Orchestra>on – Networking
  • 22.
    Project • GitHub – brooklyncentral/clocker – Java Code – Apache 2.0 Licensed • Contribu>ons – Blueprints? – Integra>ons? – Documenta>on? – Tes>ng?
  • 23.
    Audience Ques>ons •Where do you see Docker networking going? • What about orchestra>on? • What features would be most useful to enhance Docker usability?
  • 24.
  • 25.
    Web Resources http://clocker.io/ http://brooklyn.io/ http://docker.io/ http://github.com/zettio/weave/ http://abstractvisitorpattern.co.uk/