Slide 1

Slide 1 text

Continuous delivery pipelines using Python and Docker Bogdan Gâza PyTim #6

Slide 2

Slide 2 text

1. Continuous delivery
 2. Containers
 3. Python + Docker PyTim #6

Slide 3

Slide 3 text

Continuous delivery PyTim #6

Slide 4

Slide 4 text

Continuous delivery PyTim #6 commit to production without human intervention

Slide 5

Slide 5 text

Version Control Prod Build (including tests) Deploy to Beta (including integration tests) Deploy to Gamma (including integration tests) git Artefact Artefact Artefact Commit PyTim #6 workflow to deliver code from commit to production

Slide 6

Slide 6 text

Version Control Prod Build (including tests) Deploy to Beta (including integration tests) Deploy to Gamma (including integration tests) git Artefact Artefact Artefact Commit PyTim #6 workflow to deliver code from commit to production

Slide 7

Slide 7 text

PyTim #6 Artefact Install dependencies Run Tests Package dependencies Build Run VM Install dependencies Start Service Deploy to Beta Run Tests

Slide 8

Slide 8 text

PyTim #6 Artefact Install dependencies Run Tests Package dependencies Build Run VM Install dependencies Start Service Deploy to Beta Run Tests

Slide 9

Slide 9 text

Containers PyTim #6

Slide 10

Slide 10 text

What is a container? PyTim #6 Lightweight linux environment
 Hermetically sealed
 Runnable artefact
 Recently popularised by Docker

Slide 11

Slide 11 text

What is a container? PyTim #6 Usually refers to LXC (Lightweight Linux Containers)
 ”Chroot on steroids”


Slide 12

Slide 12 text

What is a Docker? PyTim #6 API on top of LXC

Slide 13

Slide 13 text

What is a Docker? PyTim #6 $ docker run

Slide 14

Slide 14 text

What is a Docker? PyTim #6 $ docker push memcached push $ docker pull memcached pull

Slide 15

Slide 15 text

What is a Docker? PyTim #6 Initial import - installed dependencies Base Ubuntu 14.04 Image Changed upstart configuration Read configuration from env a6e6ad60775b 2ef2eea4a089 dc2b44fbfcfb 80bb15227646 Layered filesystem

Slide 16

Slide 16 text

PyTim #6 Version Control Prod Build (including tests) Deploy to Beta (including integration tests) Deploy to Gamma (including integration tests) git Artefact Artefact Artefact Commit

Slide 17

Slide 17 text

PyTim #6 Docker + Python

Slide 18

Slide 18 text

PyTim #6 Version Control Prod Build (including tests) Deploy to Beta (including integration tests) Deploy to Gamma (including integration tests) git Artefact Artefact Artefact Commit

Slide 19

Slide 19 text

PyTim #6 Salt-Master TeamCity Docker Registry S3 New container build m1.small

Slide 20

Slide 20 text

PyTim #6 Docker Orchestration Game Server API API (beta) c3.large 14.04

Slide 21

Slide 21 text

PyTim #6 Orchestration

Slide 22

Slide 22 text

PyTim #6 Docker c3.large 14.04 14.04 Orchestration c3.large Docker Orchestration Docker c3.large 14.04 14.04 Orchestration c3.large Docker Orchestration keep + etcd Game Server Game Server (dev) Game Server Game Server Game Server (beta) Game Server (beta) API API API API (dev) API (beta) API (beta)

Slide 23

Slide 23 text

Q/A PyTim #6

Slide 24

Slide 24 text

Thanks! PyTim #6