Müssen es denn immer gleich Docker und Kubernetes sein?!

Post on 21-Jan-2018

81 views 0 download

Transcript of Müssen es denn immer gleich Docker und Kubernetes sein?!

Müssen es denn immer gleich Docker und Kubernetes sein?!

Michael Bruns

inovex GmbH

› I’m perfectly fine with using Docker or Kubernetes

› Really!

› The same goes for Docker Swarm, Rocket, Rancher, …

› No kidding!

› I just like to use the right tool for the job in a proper way

2Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Disclaimer

3Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Use the right tool for the job...

...and use it wisely!

4Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Please allow me to introduce myself:

› Software developer, architect, ...

› AWS fanboy

› Built quite a bit of waipu.tv

› http://sayat.me/mbruns

Michael Bruns

inovex GmbH

5Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

What did we build?

AuthRegistration PlayoutEPG Recording

Users Streaming

......

ThirdParty

...

› Don’t build a platform, use one - in our case: AWS

› Use what’s already there: EC2, RDS, S3, Elasticsearch, Kinesis, Route53, Lambda ...

› Add shared stuff (e.g. JVM, nginx) to base image (AMI)

› Leave the rest to the services

6Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

How did we build it?

› Foster DevOps, i.e. tear down all political and technological barriers

› Choose the right tool for the job:Terraform, GitLab CI, Prometheus, …

› Make infrastructure reproducible

7Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

How did we build it?

› 50+ EC2 instances, 25+ Auto-Scaling Groups,25+ ELBs, 75+ Security Groups

› ~30m objects / 3+ TB in S3 Buckets

› ~60m documents stored in Elasticsearch

› 50+ Git Repositories with GitLab CI

8Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

What did we use?

› ~10 Lambdas (growing a lot)

› 5 PostgreSQL databases, 6 Redis Caches

› 75+ DNS entries

› Java, JS, Clojure (and some Ruby, Lua, Go, …)

› ~15 people working in 5+ locations

9Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

What did we use?

› Declarative definition of infrastructure

› Reproducible

› Local vs remote states

› Easily understable

10Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Terraform

11Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Terraform - Examples

12Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Terraform - Examples

› Continuous Integration & Deployment

› Pipelines

› Stages, Environments, Variables, Tags, …

› Easy integration of runners

13Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

GitLab CI

14Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

GitLab CI - Examples

15Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

GitLab CI - Examples

16Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

GitLab CI - Examples

17Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

The whole pipeline

Local GitRepo

GitLabRepo

GitLab CI Build(Gradle,

Leiningen, …)

GitLab CIDeployment

(Terraform)

Dev

GitLab CIDeployment(Terraform)

GitLab CIDeployment(Terraform)

Preview Prod

auto auto

manually manually

GitLab CITests

auto

GitLab CITests

auto

18Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

So why didn’t we useDocker and Kubernetes?

› Which problem are you actually trying to solve?

› Will Docker and/or Kubernetes really stop you from making the same old mistakes?

› Don’t you want to avoid complexity and get going?

› Is it really the platform you want to start with?

19Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Don’t put the cart before the horse!

20Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

The Turducken - Creation

http://www.seriouseats.com/2012/11/the-food-lab-the-ulimate-turducken.html

21Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

The Turducken - Result

http://www.seriouseats.com/2012/11/the-food-lab-the-ulimate-turducken.html

› Kubernetes & Docker is a cloud in the cloud

› It adds several layers of abstraction

› It takes an experienced person to handle it

› You should prepare the interior first, and add the outer layers when you know how the interior works

22Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

The Turducken - Analogy

› We know how the interior works

› We have loosely coupled services

› We know which load to expect, how many customers to expect, we have a working deployment pipeline, ...

› Maybe we should start using Kubernetes now after all?!

23Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

The Turducken - Conclusion

24Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

So everything is greatwithout Docker and Kubernetes?

› Real-life conversation from another project:

› Manager: “We need Microservices!”

› Me: “Ok. Why?”

› Manager: “Err…”

› Me: “Did you at least talk to Dev and Ops?”

› Manager: “Err…”

25Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

When to consider a platform right away?

› Real-life conversation from another project:

› Me: “Can we operate the VMs with our team?”

› Manager: “No, the Ops team does that.”

› Me: “Can we shift people from the Ops team to our team?”

› Manager: “No.”

› Me: “Ok… Then I need to talk to the Ops team.”

› Manager: “You can’t, they’re too busy with their roadmap.”

26Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

When to consider a platform right away?

› Real-life conversation from another project:

› Me: “We need two small VMs, one per data center.”

› Ops: “We don’t do it that way. You’ll get three perdata-center, 64 GB RAM and 6 CPUs each.”

› Me: “What?! Well, alright... Is it possible to get themby this afternoon?”

› Ops: “Nah, average delivery time is eight weeks.”

27Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

When to consider a platform right away?

28Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

Tools will not fix your people issues!

Thanks to @IanDCrosby for the inspiration!

29Müssen es denn immer gleich Docker und Kubernetes sein?! - Michael Bruns

One final note...

Both lines have the same length ?

Don’t believe anything just because it’s written on a slide!

Thanks to @danielbryantuk for the inspiration!

>><

<

Vielen Dank

Michael Bruns

inovex GmbH

Ludwig-Erhard-Allee 6

76131 Karlsruhe

michael.bruns@inovex.deTwitter: @der_miggel Feedback:

http://sayat.me/mbruns