Dockerizing apps for the Deployment Platform of the Month with OSGi - David Bosschaert & Carsten...
-
Upload
mfrancis -
Category
Technology
-
view
162 -
download
1
Transcript of Dockerizing apps for the Deployment Platform of the Month with OSGi - David Bosschaert & Carsten...
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Dockerizing for the Deployment Platform of the Month - with OSGiCarsten Ziegeler & David Bosschaert | Adobe
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
David Bosschaert Adobe R&D Ireland OSGi EEG co-chair Apache member and committer ISO JTC1 SC38 (Cloud Computing) Ireland committee member
2
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 3
Carsten Ziegeler RnD Adobe Research Switzerland Member of the Apache Software Foundation VP of Apache Felix and Sling OSGi Expert Groups and Board member
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Create...
4
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Containers to the Rescue Rapid / Simplified application deployment Lightweight, reduced overhead Portability across machines Sharing
5
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Application Canning
6
OSGi app == Java App Various solutions Apache Karaf
Distribution Apache Sling
Launchpad Provisioning Model
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Common Setup
7
OSGi Framework Launcher
Initial Bundles / Configuration
Runtime Provisioning
<feature name="my-project" version="1.0.0"> <bundle>mvn:com.mycompany.myproject/myproject-dao</bundle> <bundle>mvn:com.mycompany.myproject/myproject-service</bundle> <config name="com.foo.bar"/> </feature>
[feature name=“my-project“] com.mycompany.myproject/myproject-dao/1.0.0 mvn:com.mycompany.myproject/myproject-service/1.0.0[configurations] com.foo.bar
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi Goodies Modularity Requirements and Capabilities
Explicitly declare and isolate dependencies
8
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Run...
9
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Yay dockerize your app!
10
docker container 1
App
clientdocker container 2
App
docker container 3
App
?
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
You need a load balancer
11
docker container 1
App
docker container 2
App
docker container 3
App
client LB
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 12
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Example deployment: Sling Containers!
13
docker container 1
Sling
docker container 2
Sling
docker container 3
Sling
client LB
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Manage...
14
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Solutions
15
Docker Swarm
Amazon ECS
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Here’s how… Docker Swarm/Compose
docker-compose up –d docker-compose scale mysling 3
DC/OS Marathon curl -i -H 'Content-Type: application/json' -d @<mysling.json>
http://mymarathon:8080/v2/apps Kubernetes
kubectl run mysling-node --image=cziegeler/apacheslingdemo --port:8080kubectl expose deployment mysling.node --type="LoadBalancer"
Amazon ECS aws ecs register-task-definition --family myslingfam --container-definitions
‘[{"name":"mysling”,"image":"cziegeler/apacheslingdemo","cpu":1,"memory":512,"essential":true}]’
aws ecs create-service --service-name myslingsvc --task-definition myslingfam --desired-count 3 16
yaml
json
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Everybody takes Docker containers ... but applications are defined using various proprietary APIs makes it very labour intensive to switch can we have a common API please?
17
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Or how about a common APIContainerFactory cf = … from service registry …
LoadBalancerConfig lbCfg = LoadBalancerConfig.builder(). port(80). pingLocation("/slingshot.html").build();ContainerGroupConfig config = ContainerGroupConfig.builder("mysling", "cziegeler/apacheslingdemo"). cpu(1). memory(512). instances(3). loadBalancer(lbCfg). port(8080, true).build();
Service svc = cf.getService(config);18
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo!
19
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
OSGi RFP 179 – Compute Management Service Accepted OSGi RFP Independent API to manage compute nodes Can work with RFC 183
Cluster Information Specification (previously Cloud Ecosystems) Node discovery, metadata and provisioning
20
© 2015 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Discussion
21