Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat &...

33
Microservices, geerdet René Lengwinat & Michael Bruns

Transcript of Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat &...

Page 1: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

Microservices, geerdet

René Lengwinat & Michael Bruns

Page 2: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

https://keybase.io/rlengwinat

2

René Lengwinat

inovex GmbH

https://keybase.io/michaelbruns

Michael Bruns

inovex GmbH

Microservices, geerdet - René Lengwinat & Michael Bruns

Page 3: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

3Microservices, geerdet - René Lengwinat & Michael Bruns

Source: http://meme-erstellen.de/meme/you-are-not-wrong-you-are-just-an-asshole/

Page 4: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Abstract problem split into small solutions

› Monolith would simply be too hard to handle

› Large portions of the application don’t need to know about the rest of the application

4Microservices, geerdet - René Lengwinat & Michael Bruns

Why Microservices?

Page 5: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Different people with different backgrounds and skills

› Load peaks on small parts of the application are expected

› Most important: We, i.e. the developers, wanted to do it!

5Microservices, geerdet - René Lengwinat & Michael Bruns

Why Microservices?

Page 6: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Real-life conversation:

› Manager: “We need Microservices!”

› Dev: “Ok. Why?”

› Manager: “Err…”

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

› Manager: “Err…”

6Microservices, geerdet - René Lengwinat & Michael Bruns

When to be careful...

Page 7: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Real-life conversation:

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

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

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

› Manager: “No.”

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

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

7Microservices, geerdet - René Lengwinat & Michael Bruns

When to be careful...

Page 8: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Real-life conversation:

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

› Ops: “We don’t do it that way. You’ll get three per

data-center, 64 GB RAM and 6 CPUs each.”

› Dev: “What?! Well, alright... Is it possible to get them

by this afternoon?”

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

8Microservices, geerdet - René Lengwinat & Michael Bruns

When to be careful...

Page 9: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

9Microservices, geerdet - René Lengwinat & Michael Bruns

Page 10: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

10Microservices, geerdet - René Lengwinat & Michael Bruns

Who am I? - Session Management

Old school

SPOF

Old school in new env

SPOF + BOTTLENECK

New Way

Manageable Risk

nRequestsOnSessionService = nRequests * nServices

Page 11: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

11Microservices, geerdet - René Lengwinat & Michael Bruns

Secret Sauce - The JWT - JSON Web Token

{ "alg": "HS256", "typ": "JWT"}

{ "sub": "1234567890", “iss”: “serviceA”, “exp”: “1460667024”, "name": "John Doe", "rights": [“READ”, “WRITE”]}

secret

base64(header) + “.” + base64(claims) + “.” + base64(hmacSha256(secret, base64(header) + “.” + base64(claims)))

Signature

Page 12: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

12Microservices, geerdet - René Lengwinat & Michael Bruns

Secret Sauce - The JWT - JSON Web Token

› Applications

› Sessions

› Account confirmation

› Password reset

› Short-lived tokens (app to web handshake)

Page 13: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

13Microservices, geerdet - René Lengwinat & Michael Bruns

Source: https://i.imgflip.com/125yfz.jpg

Page 14: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

14Microservices, geerdet - René Lengwinat & Michael Bruns

What about the UI?

Header

Content I

Content II Content III

MonolithicService

Page 15: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

15Microservices, geerdet - René Lengwinat & Michael Bruns

What about the UI?

Header

Content I

Content II Content III

Service II

Service III Service I

Header

Content II

Content I Content II

Page 16: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

16Microservices, geerdet - René Lengwinat & Michael Bruns

What about the UI?

Header

Content I

Content II Content III

Front endService

Service II

Service III

Service I

Page 17: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

17Microservices, geerdet - René Lengwinat & Michael Bruns

What about the UI?

Header

Content I

Content I Content II

Service II

Service III

Service I

Header

Content II

Content I Content III

Front endService / CDN

Page 18: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› S3 Bucket as CDN

› Mustache templates

› Lightweight, no SPAs

› Planned: Web Components

18Microservices, geerdet - René Lengwinat & Michael Bruns

What about the UI?Header

Content I

Content I Content II

Service II

Service III

Service I

Header

Content II

Content IContent

III

Front endService / CDN

Page 19: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

19Microservices, geerdet - René Lengwinat & Michael Bruns

Page 20: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

20Microservices, geerdet - René Lengwinat & Michael Bruns

My code, your code - Shared vs Template

› What’s wrong with shared code?

› Reuse

› Coupling

› Opinionated

IT DEPENDS -> organisational structure, maturity

Page 21: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

21Microservices, geerdet - René Lengwinat & Michael Bruns

My code, your code - Shared vs Template

› Alternative -> Template Project

› Yeoman, leiningen, git repo

› Fast setup

› Doesn’t fit? Change / Fork

› Standards embedded

› Updates

Page 22: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

22Microservices, geerdet - René Lengwinat & Michael Bruns

Source: https://imgflip.com/i/12ll0d

Page 23: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

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

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

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

› Leave the rest to the services

23Microservices, geerdet - René Lengwinat & Michael Bruns

IaaS - Yet Another Platform?

Page 24: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

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

› Choose the right tool for the right job:Terraform, Go CD, Prometheus, flood IO, …

› Make your infrastructure reproducible

24Microservices, geerdet - René Lengwinat & Michael Bruns

IaaS - Yet Another Platform?

Page 25: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Don’t build a gateway service if it’s not necessary

› Start small, expect growth

› Geo-redundancy

› Monitor your stuff, send alarms

25Microservices, geerdet - René Lengwinat & Michael Bruns

IaaS - Yet Another Platform?

Page 26: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Short insight:

› 40+ EC2 instances, 20+ Auto-Scaling Groups,

50+ Security Groups, 500+ GB in S3 Buckets

› ~20m documents stored in ~3k shards in Elasticsearch

› 40+ Go CD pipelines, >100 Git Repositories

› ~15 people working in 5+ locations

26Microservices, geerdet - René Lengwinat & Michael Bruns

IaaS - Yet Another Platform?

Page 27: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

27Microservices, geerdet - René Lengwinat & Michael Bruns

Page 28: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Local debt vs global debt

› Don’t be afraid of tracking publicly

› Track across service boundaries

› Continuously review tech debt

› Continuously reduce tech debt

28Microservices, geerdet - René Lengwinat & Michael Bruns

Many services = Technical debt?

Page 29: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

› Continuous Tech Review

› Weekly review

› Track and attack tech debt

› Discuss possible improvements

› Discuss risks

› Time boxed!

29Microservices, geerdet - René Lengwinat & Michael Bruns

Many services = Technical debt?

Page 30: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

30Microservices, geerdet - René Lengwinat & Michael Bruns

Many services = Technical debt?

Service Commons Backlog

Page 31: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

31Microservices, geerdet - René Lengwinat & Michael Bruns

Page 32: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

32Microservices, geerdet - René Lengwinat & Michael Bruns

Source: https://imgflip.com/i/12lr94

Page 33: Microservices, geerdet - inovex · 2019. 3. 13. · Microservices, geerdet - René Lengwinat & Michael Bruns 8 When to be careful... 9 Microservices, geerdet - René Lengwinat & Michael

Vielen Dank

René Lengwinat &

Michael Bruns

inovex GmbH

Ludwig-Erhard-Allee 6

76131 Karlsruhe

[email protected]

[email protected]