Slide 1

Slide 1 text

Infrastructure for Continuous Delivery & Microservices: PaaS or Docker? Eberhard Wolff Fellow @ewolff

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

http://microservices-buch.de/ http://microservices-book.com/

Slide 4

Slide 4 text

Why This Talk? > 2008: Google App Engine > Google Infrastructure for the masses! > 2010: Selling PaaS into Enterprise > Future of application development! > Didn‘t really take off

Slide 5

Slide 5 text

What is Cloud?

Slide 6

Slide 6 text

Cloud = Self Service

Slide 7

Slide 7 text

Infrastructure as a Service Platform as a Service Software as a Service Software or Service that you use Components that you integrate into your app Virtual Application Server Handles Scale-Out Mostly Managed by Provider Virtual Servers Manage Everything Yourself

Slide 8

Slide 8 text

PaaS Your application Including database, scaling, monitoring, HTTP handling...

Slide 9

Slide 9 text

Cloud might be... > Private / internal “on premise” > Public “off premise”

Slide 10

Slide 10 text

Why PaaS? > Scaling? > Pay-as-you-go? > Quickly and easily deploy applications ?

Slide 11

Slide 11 text

Continuous Delivery is the value propostion of PaaS

Slide 12

Slide 12 text

Issues With PaaS > Standardized infrastructure > Not flexible > Hard to migrate existing applications > Installing PaaS on-premise hard > Enterprise=On-Premise > Huge success for Internet apps

Slide 13

Slide 13 text

PaaS Your application

Slide 14

Slide 14 text

Continuous Delivery: Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Deploy Deploy Deploy Deploy Automated Reproducible Fast

Slide 15

Slide 15 text

Continuous Delivery: State of the Art > Roll your own deployment automation > Chef, Puppet, Ansible > Use some kind of virtualization > ...or Docker

Slide 16

Slide 16 text

Docker > No true virtualization > Linux Containers (lxc) > Shared kernel > Separate file systems > Separated network interfaces

Slide 17

Slide 17 text

Docker File Systems > Storage backends > Devicemapper (block devices) > Read only base images > + Read/write image > Can be stacked Ubuntu Java Application Read / Write

Slide 18

Slide 18 text

Docker = Lightweight > One base image > Other images are just a diff > Little storage > Kernel etc. shared > Almost no overhead over a process CPU

Slide 19

Slide 19 text

Docker = Simple Deployment RUN COPY

Slide 20

Slide 20 text

Docker = Simple Deployment > Dockerfile > Just a shell script > Behind the scenes: Optimization > Every Dockerfile line = filesystem snapshot > Reuse snapshots for all other Dockerfiles

Slide 21

Slide 21 text

Docker‘s History > Public PaaS must separate tenants > Ideally multiple tenants per VM > Docker started as foundation for dotCloud PaaS > Docker and PaaS related

Slide 22

Slide 22 text

Why Docker Over PaaS? > Still simple deployment > Still simple installation > Unlimited flexibility

Slide 23

Slide 23 text

Your application Load Balancer Log Parser Cache Monitoring Database

Slide 24

Slide 24 text

Microservices

Slide 25

Slide 25 text

Definition Microservice > Independent deployment unit > Separate data handling & storage > Should include UI > Process > VM > Docker container > Any technology Server Micro Service

Slide 26

Slide 26 text

Operations > Operating 50-100 Microservices? > Huge challenge > Only option: Standardize

Slide 27

Slide 27 text

Your application Load Balancer Log Parser Cache Monitoring Database Standardize ✓ ✓ ✓ ? ?

Slide 28

Slide 28 text

Standardized Environment?

Slide 29

Slide 29 text

Congrats on Building Your Own PaaS!

Slide 30

Slide 30 text

Demo: Elastic Beanstalk

Slide 31

Slide 31 text

Amazon Elastic Beanstalk > Application: Contains all versions & environments > Version: Deployabel artifact > Environment: Runs a version of the application

Slide 32

Slide 32 text

Elastic Beanstalk Features > Supports multiple environments > Blue/green deployment support > Scalable infrastructure > Log files stored in S3 > Monitoring through Cloud Watch > Also via CLI, API or Cloud Formation

Slide 33

Slide 33 text

But just a WAR is not enough

Slide 34

Slide 34 text

Elastic Beanstalk Turn Key Components Paas Flexibility Modify Beanstalk Image Beanstalk +Docker Elastic Beanstalk Java, Go, Python... Databases (RDS) ElastiCache ... You own EC2 Virtual Machine Additional Services

Slide 35

Slide 35 text

But I want to run in my datacenter!

Slide 36

Slide 36 text

Cloud Foundry > Open Source PaaS > Foundation for IBM Bluemix, Pivotal CF ...

Slide 37

Slide 37 text

Cloud Foundry Included Services e.g. MySQL... Paas Flexibility Your own Buildback Cloud Foundry Buildpacks Java, Node, Ruby, Go You own Service Additional Services

Slide 38

Slide 38 text

Demo: Cloud Foundry

Slide 39

Slide 39 text

Conclusion

Slide 40

Slide 40 text

Conclusion > Continuous Delivery = PaaS Value Proposition > PaaS lacked flexibility > Docker orignates from PaaS > Microservices = Standardization > Standardization = Your Own PaaS > Buy instead of build? > Modern PaaS provide the needed flexibility

Slide 41

Slide 41 text

Thank You! @ewolff