docker and pharo - marcus denker › talks › 18esug › [email protected]:...

32
Docker and Pharo @

Upload: others

Post on 27-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Docker and Pharo @

Page 2: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

We are…

Pierre Chanson

Marcus Denker

Norbert Hartl

Page 3: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

• Founded in 2009 (10 Year party next year!)

• 13 people in Cologne (Germany) and Ho Chi Minh City (Vietnam)

• iPhone, Android, Web, Backend. Pharo!

• You might know the german Call A Bike or Flinkster Car Sharing.

Page 4: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

This presentation

• Server infrastructure

• Application deployment, Monitoring

• Workflow: following one commit step-by-step

Page 5: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

The project

• Big project: mobility service for Airbus

• Need for scale: +10k users in a few hours timeframe

• Need not to be killed by complexity

Page 6: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

API

message queue

cars

bikes

cars

trains

buses

API

Micro services

Page 7: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Iceberg Jenkins

Docker HubDocker Swarm

db

Pharo Pharo Pharo

Pharo Pharo

Pharo Pharo

Page 8: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Regular day of coding at the office…

Page 9: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Regular day of coding at the office…

self flag: #bob

true become: false

Page 10: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Regular day of coding at the office…

Gotta show this to my boss !

self flag: #bob

true become: false

Page 11: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Regular day of coding at the office…

How ???

Gotta show this to my boss !

self flag: #bob

true become: false

Page 12: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Iceberg Jenkins

Docker HubDocker Swarm

db

Pharo Pharo Pharo

Pharo Pharo

Pharo Pharo

Page 13: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Git commit

Git push

Pull request

Review…

“Good job” merge

Page 14: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Iceberg Jenkins

Docker HubDocker Swarm

db

Pharo Pharo Pharo

Pharo Pharo

Pharo Pharo

Page 15: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Wassup ? (every 10 mins)

Alright, pullrun tests

docker …

Page 16: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

What is Docker?

• Think about it as a Smalltalk image, but for Linux

• Docker Image is build from a description (Dockerfile)

• Then we can run it (once or multiple times)

Page 17: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Wassup ? (every 10 mins)

Alright, pullrun tests

docker-compose build docker-compose push

Page 18: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Iceberg Jenkins

Docker HubDocker Swarm

db

Pharo Pharo Pharo

Pharo Pharo

Pharo Pharo

Page 19: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Iceberg Jenkins

Docker HubDocker Swarm

db

Pharo Pharo Pharo

Pharo Pharo

Pharo Pharo

Page 20: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Ansible: Orchestration

• We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

• Ansible is a way to script typical unix admin things

• Both used to setup the Linux machines and to start Docker

Page 21: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

ansible-playbook -i myInventory myYml.yml

(there is nothing worse than yaml!)

Page 22: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Iceberg Jenkins

Docker HubDocker Swarm

DB

Page 23: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Docker: Swarm

• We want to run on multiple machines

• Swarm allows to run “services” which scale to multiple docker containers

• Manages Distribution, restart…

Page 24: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Iceberg Jenkins

Docker HubDocker Swarm

DB

Page 25: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Monitoring

• Lots of machines (virtual and real)

• Lot of different software (database, web, message queue, lots Pharo images)

• How do we look at it?

Page 26: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Monitoring

• Grafana

• Dashboard

• Alarms: Get Notifications via Mail and in Slack

• Docker images provide data via REST API

• Pharo GC, Zinc Requests

Page 27: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)
Page 28: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

internet

API

message queue

web client

load balancer

bikes

DB

cars

DB

trains

DB

buses

DB

API

DB

Page 29: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

load balancer

Physical servers

API

DB DB DB

bikes

bikescars

carsbusestrains

buses

API

Page 30: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

And that x 3

• We have 3 Swarms:

• Alpha (development)

• Beta (testing)

• Production

• And you can run the whole setup on your laptop, too!

+100 Pharo images overall in our cluster

Page 31: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Much more…Pharo Library for Docker Swarm (work in progress)

Page 32: Docker and Pharo - Marcus Denker › talks › 18ESUG › Docker@Zweidenker.pdfAnsible: Orchestration • We need to start lots of stuff (Pharo, Webserver, MessageQueue, Database…)

Much more…• Lots of in-house libs

• Visualise Docker Swarm with Roassal (first work)

• Docker Health Check from Pharo

• Server for and Pharo app for Fuel Stack Traces

• DockerEngine + OpenAPI

Tell us what you want to see at the Show Us Your Project !