Stups.io - an Open Source Cloud Framework for AWS

93
STUPS.io an Open Source Cloud Framework for AWS [email protected] / @jlsoft2 DevOpsCon Munich 2015-11-25

Transcript of Stups.io - an Open Source Cloud Framework for AWS

Page 1: Stups.io - an Open Source Cloud Framework for AWS

STUPS.ioan Open Source Cloud Framework for [email protected] / @jlsoft2DevOpsCon Munich 2015-11-25

Page 2: Stups.io - an Open Source Cloud Framework for AWS

We shape our buildings;thereafter they shape us

Page 3: Stups.io - an Open Source Cloud Framework for AWS

Conway’s Law

“organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations”

Melvin Conway

Page 4: Stups.io - an Open Source Cloud Framework for AWS

AN ARCHITECTURE FOR INNOVATION

Page 5: Stups.io - an Open Source Cloud Framework for AWS
Page 6: Stups.io - an Open Source Cloud Framework for AWS
Page 7: Stups.io - an Open Source Cloud Framework for AWS
Page 8: Stups.io - an Open Source Cloud Framework for AWS
Page 9: Stups.io - an Open Source Cloud Framework for AWS

A BRIEF HISTORY OF ZALANDOTECHNOLOGY

Page 10: Stups.io - an Open Source Cloud Framework for AWS
Page 11: Stups.io - an Open Source Cloud Framework for AWS
Page 12: Stups.io - an Open Source Cloud Framework for AWS
Page 13: Stups.io - an Open Source Cloud Framework for AWS

November

1.000+Apps

900+ Tech employees

Page 14: Stups.io - an Open Source Cloud Framework for AWS

PLATFORM Platform team

request serversdeploy

Datacenter

Page 15: Stups.io - an Open Source Cloud Framework for AWS

70+ delivery teams

Platform team

deployrequest servers

request storage PLATFORM

Datacenter

Page 16: Stups.io - an Open Source Cloud Framework for AWS
Page 17: Stups.io - an Open Source Cloud Framework for AWS
Page 18: Stups.io - an Open Source Cloud Framework for AWS

DELIVER AMAZING PRODUCTS EFFICIENTLY AT SCALE, AND FEELING GREAT ABOUT IT.

Page 19: Stups.io - an Open Source Cloud Framework for AWS

PURPOSE - AUTONOMY - MASTERY

Page 20: Stups.io - an Open Source Cloud Framework for AWS
Page 21: Stups.io - an Open Source Cloud Framework for AWS
Page 22: Stups.io - an Open Source Cloud Framework for AWS
Page 23: Stups.io - an Open Source Cloud Framework for AWS

DRIVE

The Surprising Truth About What Motivates Us

Daniel Pink

Page 24: Stups.io - an Open Source Cloud Framework for AWS

FROM CONTROL & COMMANDTO PURPOSE AND TRUST

Page 25: Stups.io - an Open Source Cloud Framework for AWS

DELIVERYLEAD

PEOPLELEAD

Page 26: Stups.io - an Open Source Cloud Framework for AWS

GLOBAL REGRESSION

INNOVATION LAB

TECH SERVICE

PRODUCT OWNER

PRODUCT SPECIALIST

DELIVERYLEAD

PEOPLELEAD

BUSINESS ASSURANCE

PRODUCT

OVERARCHING

ADMIN & SUPPORT

CONTROLLING

EXECUTIVE SUPPORT

COMPLIANCE RISK ,

SECURITY & STRATEGY

ONBOARDING & TECHADEMY

AGILE COACHING PROJECT

MANGEMENT

ENGINEERINGPRODUCTIVITY

DELIVERYLEAD

PEOPLE LEAD

DELIVERY

Page 27: Stups.io - an Open Source Cloud Framework for AWS
Page 28: Stups.io - an Open Source Cloud Framework for AWS
Page 29: Stups.io - an Open Source Cloud Framework for AWS

API FIRST

Page 30: Stups.io - an Open Source Cloud Framework for AWS

REST

Page 31: Stups.io - an Open Source Cloud Framework for AWS

SAAS

Page 32: Stups.io - an Open Source Cloud Framework for AWS

MICROSERVICES

Page 33: Stups.io - an Open Source Cloud Framework for AWS

CLOUD

Page 34: Stups.io - an Open Source Cloud Framework for AWS

OPEN SOURCE

Page 35: Stups.io - an Open Source Cloud Framework for AWS
Page 36: Stups.io - an Open Source Cloud Framework for AWS

Compliance Innovation

Page 37: Stups.io - an Open Source Cloud Framework for AWS

file:///Users/kwalckermaye/Downloads/Mobile-Developers-look-ov-008.jpg

file:///Users/kwalckermaye/Downloads/desktop_death-600x369.jpg

file:///Users/kwalckermaye/Downloads/072358-wired.gif.jpeg

file:///Users/kwalckermaye/Downloads/the-death-of-the-desktop.jpg

Page 38: Stups.io - an Open Source Cloud Framework for AWS
Page 39: Stups.io - an Open Source Cloud Framework for AWS

WHERE TO GO

DataCenter I DataCenter II AWS

APP 1

APP 2

APP 3

APP 4

APP 5

APP 6

APP 1

APP 2

APP 3

APP 4

APP 5

APP 6

APP 1

APP 2

APP 3

APP 4

Page 40: Stups.io - an Open Source Cloud Framework for AWS
Page 41: Stups.io - an Open Source Cloud Framework for AWS

DEPLOYMENT

Page 42: Stups.io - an Open Source Cloud Framework for AWS

MANAGED SSH ACCESS

Page 43: Stups.io - an Open Source Cloud Framework for AWS

TRACABILITY

Page 44: Stups.io - an Open Source Cloud Framework for AWS

ACCOUNTISOLATION

Page 45: Stups.io - an Open Source Cloud Framework for AWS

DOCKER?

Page 46: Stups.io - an Open Source Cloud Framework for AWS

STUPSSTUPS To Unleash Penguin Swarms

https://stups.io

Page 47: Stups.io - an Open Source Cloud Framework for AWS

➊ One AWS account per Team

➋ Deployment with Docker

➌ Managed SSH Access

➍ REST/OAuth 2.0 mandatory

➎ Traceability of changes

IN A NUTSHELL

STUPS

Page 48: Stups.io - an Open Source Cloud Framework for AWS

AWS

STUPS

DOCKERDEPLOY

SSH ACCESS

AUDIT REPORTS

FULL AWS ACCESS

A PLATFORM ON TOP OF AMAZON WEB SERVICES

Page 49: Stups.io - an Open Source Cloud Framework for AWS

“We provide maximum freedom for developers while enabling near-real-time audit compliance for every single application.”

-- Zalando STUPS Delivery Team

Page 50: Stups.io - an Open Source Cloud Framework for AWS

Public Internet

*.jacob.example.org

*.edward.example.orgTeam “Jacob”

Team “Edward”

ELB

ELB

ISOLATED AWS ACCOUNTS & OAUTH 2.0 & SECURITY

Data CenterLB

AWS

Page 51: Stups.io - an Open Source Cloud Framework for AWS

IMMUTABLE STACKS

ELB myapp-v1

myapp.example.org

EC2+ Docker

EC2+ Docker

EC2+ Docker

100%

Page 52: Stups.io - an Open Source Cloud Framework for AWS

IMMUTABLE STACKS

ELB myapp-v1

EC2+ Docker

EC2+ Docker

EC2+ Docker

ELB myapp-v2

EC2+ Docker

EC2+ Docker

myapp.example.org

90%

10%

$ senza traffic myapp v2 10

Page 53: Stups.io - an Open Source Cloud Framework for AWS

IMMUTABLE STACKS

ELB myapp-v1

EC2+ Docker

EC2+ Docker

EC2+ Docker

ELB myapp-v2

EC2+ Docker

EC2+ Docker

myapp.example.org

0% 100%

$ senza traffic myapp v2 100

Page 54: Stups.io - an Open Source Cloud Framework for AWS

EXAMPLE STACK

AWS EC2

Taupage AMI

Docker Container

Application

✓ In isolated team account

✓ Created by senza through Cloud Formation

✓ Docker Runtime✓ Managed SSH

access✓ Audit Logging✓ Log Collection✓ Monitoring✓ Reviewed security

additions

✓ Ubuntu✓ OpenJDK✓ Zalando

CA certificate

✓ scm-source

Page 55: Stups.io - an Open Source Cloud Framework for AWS

AWS

Senza CLI

Docker Registry

docker pull

docker push

AMI

Page 56: Stups.io - an Open Source Cloud Framework for AWS

DEMO TIME

Page 57: Stups.io - an Open Source Cloud Framework for AWS

Securing REST based Microservices

Lock all doors● Open only ports that you need

permanently● Grant SSH access only temporary● Use a firewall for each app container

Encrypt all channels & critical data● Keep all transferred data confidential● Use TLS● Encrypt data in databases & use HSM

Authenticate & Authorize ● Make sure you talk to the right guy● Check if access is permitted● Use OAuth 2.0

Monitor & Limit your API calls● Control who accesses your API how

often, when and from where● Use Rate Limiting against fraud● Use external Security Services against

DDoSIsolate your apps● Only one app per container / server● Use Docker or CoreOS Rkt

Page 58: Stups.io - an Open Source Cloud Framework for AWS

AWS

Developer Console

get access token

AMI

Password Rotator

OAuthProvider

store passwords

get passwordS3

rotate passwords

ApplicationRegistry

Page 59: Stups.io - an Open Source Cloud Framework for AWS

SCM

Ticket system

Issue “ABC-123”

Commit “afb123”msg: ABC-123..

Page 60: Stups.io - an Open Source Cloud Framework for AWS

SCM

Pier One Docker Registry

build

Ticket systemImage “docker/myart:1.0”commit: afb123Issue “ABC-123”

Commit “afb123”msg: ABC-123..

Page 61: Stups.io - an Open Source Cloud Framework for AWS

Pier One Docker Registry

build

approvedApplication Version “1.0”artifact: docker/myart:1.0

Ticket system

Application Registry

SCM

Image “docker/myart:1.0”commit: afb123Issue “ABC-123”

Commit “afb123”msg: ABC-123..

✓ Specification✓ Artefact tested

Page 62: Stups.io - an Open Source Cloud Framework for AWS

Pier One Docker Registry

build

approved

EC2 Instance

Docker Container

Application Version “1.0”artifact: docker/myart:1.0

AMI

Ticket system

Application Registry

SCM

Image “docker/myart:1.0”commit: afb123Issue “ABC-123”

Commit “afb123”msg: ABC-123..

✓ Specification✓ Artefact tested

Page 63: Stups.io - an Open Source Cloud Framework for AWS
Page 64: Stups.io - an Open Source Cloud Framework for AWS

Spilo Highly available open-source

PostgreSQL appliancehttps://github.com/zalando/spilo

Page 65: Stups.io - an Open Source Cloud Framework for AWS
Page 66: Stups.io - an Open Source Cloud Framework for AWS

Apache License Version 2.0

STUPS

stups.io & github.com/zalando-stups

Page 67: Stups.io - an Open Source Cloud Framework for AWS

Radical AgilityPurpose - Autonomy - Mastery

Architecture principlesImmutable Infrastructure

Security is key

SUMMARY

Page 68: Stups.io - an Open Source Cloud Framework for AWS

Build a trustful “devops” culture&

Utilize cloud services to give teams autonomy

MESSAGE

Page 69: Stups.io - an Open Source Cloud Framework for AWS

Try STUPS.iohttps://stups.iohttps://docs.stups.io

All components are Open Sourcehttps://github.com/zalandohttps://github.com/zalando-stups

Page 70: Stups.io - an Open Source Cloud Framework for AWS

Jan Löffler● Head of Platform Engineering

● Twitter: @jlsoft2

[email protected]

● http://www.slideshare.net/jlsoft/

Page 71: Stups.io - an Open Source Cloud Framework for AWS

We shape our buildings;thereafter they shape us

Page 72: Stups.io - an Open Source Cloud Framework for AWS

STUPS website & docshttps://stups.iohttps://docs.stups.io

All components are Open Sourcehttps://github.com/zalandohttps://github.com/zalando-stups

Page 73: Stups.io - an Open Source Cloud Framework for AWS

BACKUP

Page 74: Stups.io - an Open Source Cloud Framework for AWS
Page 75: Stups.io - an Open Source Cloud Framework for AWS

DEPLOYMENT

Page 76: Stups.io - an Open Source Cloud Framework for AWS

FROM zalando/openjdk:8u40-b09-4

EXPOSE 8080

COPY target/hello-world.jar /COPY target/scm-source.json / CMD java $(java-dynamic-memory-opts) ↲ -jar /hello-world.jar

DOCKERFILE

Page 77: Stups.io - an Open Source Cloud Framework for AWS

$ docker build -t ↲ pierone.example.org/myteam/hello-world:0.2 .

$ pierone loginGetting OAuth2 token "pierone".. OKStoring Docker client configuration in ~/.dockercfg.. OK

$ docker push pierone.example.org/myteam/hello-world:0.2

DOCKER BUILD & PUSH

Page 78: Stups.io - an Open Source Cloud Framework for AWS

$ pierone tags myteam hello-worldTeam │Artifact │Tag │Created│By | myteam hello-world 0.1-andre-test 13d ago ahartmannmyteam hello-world 0.1 3d ago ahartmann myteam hello-world 0.2 3m ago hjacobs

$ pierone scm myteam hello-world 0.2Tag│Author │URL │Revision │Status│Created│By | 0.2 hjacobs git:git@github.. 442b7502 10m ago hjacobs

VERIFY IMAGE UPLOAD

Page 79: Stups.io - an Open Source Cloud Framework for AWS

SENZA: DEFINITION YAML

SenzaInfo: StackName: hello-world Parameters: - ImageVersion: Description: "Docker image version of Hello World."SenzaComponents: - Configuration: Type: Senza::StupsAutoConfiguration # auto-detect network setup - AppServer: # will create a launch configuration and ASG with scaling triggers Type: Senza::TaupageAutoScalingGroup InstanceType: t2.micro SecurityGroups: [app-hello-world] ElasticLoadBalancer: AppLoadBalancer TaupageConfig: runtime: Docker source: "stups/hello-world:{{Arguments.ImageVersion}}" ports: 8080: 8080

Page 80: Stups.io - an Open Source Cloud Framework for AWS

SENZA: STACK DEPLOYMENT

$ senza create hello-world.yaml 1 0.2Generating Cloud Formation template.. OK

Creating Cloud Formation stack hello-world-1.. OK

$ senza events hello-world.yaml 1Stack Name│Ver.│Resource Type │Resource ID │Status │Status Reason │Event Timehello-world 1 CloudFormation::Stack hello-world-1 CREATE_IN_PROGRESS User Initiated 10m ago ...hello-world 1 CloudFormation::Stack hello-world-1 CREATE_COMPLETE 6m ago

Page 81: Stups.io - an Open Source Cloud Framework for AWS

docker run -d --log-driver=syslog ↲ --restart=on-failure:10 ↲ -e DB_SUBNAME=.. ↲ -v /meta:/meta:ro ↲ -e CREDENTIALS_DIR=/meta/credentials ↲ -p 8080:8080 -p 7979:7979 ↲ -u 999 ↲ pierone.example.org/stups/pierone:0.5

TAUPAGE: DOCKER COMMAND LINE

Page 82: Stups.io - an Open Source Cloud Framework for AWS

SENZA: MANAGE STACKS

Page 83: Stups.io - an Open Source Cloud Framework for AWS

LOGGING

Page 84: Stups.io - an Open Source Cloud Framework for AWS

docker run .. --log-driver=syslog ..

/etc/rsyslog.d/24-application.conf:syslogtag, startswith, "docker" ↲ /var/log/application.log

/etc/logrotate.d/..Don’t forget log rotation..

TAUPAGE: DOCKER SYSLOG

Page 85: Stups.io - an Open Source Cloud Framework for AWS

APPLICATION LOGS: TAUPAGE SUPPORTS LOGENTRIES AND SCALYR

Page 86: Stups.io - an Open Source Cloud Framework for AWS

SSH ACCESS

Page 87: Stups.io - an Open Source Cloud Framework for AWS

SSH ACCESS: TIME-LIMITED ACCESS TO ANY TEAM SERVER

Page 88: Stups.io - an Open Source Cloud Framework for AWS

MONITORING

Page 89: Stups.io - an Open Source Cloud Framework for AWS

TODO: Screenshot

ZMON

Page 90: Stups.io - an Open Source Cloud Framework for AWS

ZMON APPLIANCE

*.foo.example.org *.bar.example.org

Team “Foo” Team “Bar”

EC2Instance

EC2InstanceEC2

InstanceEC2

Instance

ZMON Appliance

ZMON Appliance

KairosDB

EC2Instance

EC2Instance

ZMONController

ELB ELB

Page 91: Stups.io - an Open Source Cloud Framework for AWS

HYSTRIX TURBINE

Page 92: Stups.io - an Open Source Cloud Framework for AWS

DOCKER

Page 93: Stups.io - an Open Source Cloud Framework for AWS

Ubuntu & OpenJDK base imageLog to STDOUTConfig via environ. vars (+ KMS decryption)Non-root executionPersistence via EBS mountsImmutable stacks, no orchestrationDNS endpoints, etcd e.g. for Hystrix streams

RECAP: DOCKER IN STUPS