Microservices architecture pitfalls

78
Microservices architecture pitfalls WJUG meeting march 2015 Mateusz Gajewski Solutions Architect @ Allegro Twitter: @wendigo

Transcript of Microservices architecture pitfalls

Page 1: Microservices architecture pitfalls

Microservices architecture pitfalls

WJUG meeting ◦ march 2015

Mateusz GajewskiSolutions Architect @ Allegro

Twitter: @wendigo

Page 2: Microservices architecture pitfalls

About me

given: I started working in Allegro in 2009 (5 mln AO, 50 devs)

when: Allegro reached 40 mln AO, 400 devs

then: I am Solutions Architect

2

Page 3: Microservices architecture pitfalls

Agenda

• Microservices, microservices, microservices! ;)

• Some challenges & pitfalls:

• Architectural,

• Operational,

• Organisational

3

Page 4: Microservices architecture pitfalls

Let’s go back in time to year 2012

4

Page 5: Microservices architecture pitfalls

5

Page 6: Microservices architecture pitfalls

Back then we wanted

• agile development,

• scalability,

• resilience,

• lower costs,

• hybrid cloud.

6

Page 7: Microservices architecture pitfalls

Basically SOA + JVM was an answer!

7

Page 8: Microservices architecture pitfalls

But our system was too BIG & too complex to do it with

existing enterprise solutions

8

Page 9: Microservices architecture pitfalls

s/Enterprise/OSS/g Solutions ;)

9

Page 10: Microservices architecture pitfalls

we’ve started to do *buzzword*

10

Page 11: Microservices architecture pitfalls

And now, literally everyone is doing microservices!!??

11

Page 12: Microservices architecture pitfalls

Microservices by Fowler

12

Lots of *buzzwords*

http://martinfowler.com/articles/microservices.html

Page 13: Microservices architecture pitfalls

SOA ≈

microservices?

13

Page 14: Microservices architecture pitfalls

microservices architecture ≈

fine-grained SOA − enterprise (commercial) sh*t

≈ highly scalable, distributed system

14

Page 15: Microservices architecture pitfalls

Distributed systems

• concurrency of components,

• independent failure of components,

• lack of a global clock.

15

Page 16: Microservices architecture pitfalls

The Eight Fallacies of Distributed Computing

16

by Peter Deutsch

1991

Page 17: Microservices architecture pitfalls

#1: Network is reliable

17

Page 18: Microservices architecture pitfalls

#2: Latency is zero

18

Page 19: Microservices architecture pitfalls

#3: Bandwidth is infinite

19

Page 20: Microservices architecture pitfalls

#4: Network is secure

20

Page 21: Microservices architecture pitfalls

#5: Topology doesn’t change

21

Page 22: Microservices architecture pitfalls

#6: There is one administrator

22

Page 23: Microservices architecture pitfalls

#7: Transport cost is zero

23

Page 24: Microservices architecture pitfalls

#8: Network is homogeneous

24

Page 25: Microservices architecture pitfalls

distributed systems are hard →

microservices are much harder ;)

25

Page 26: Microservices architecture pitfalls

What have we learnt?

26

Page 27: Microservices architecture pitfalls

Act I: architectural constraints

27

Page 28: Microservices architecture pitfalls

CAP is not just theorem it’s reality against us

28

Page 29: Microservices architecture pitfalls

bye, bye ACID semantics

29

Page 30: Microservices architecture pitfalls

Long live BASE guarantees!

Basically

Available,

Soft state,

Eventually consistent

30

Page 31: Microservices architecture pitfalls

distributed transactions add complexity

31

Page 32: Microservices architecture pitfalls

it’s far cheaper to do compensation

32

Page 33: Microservices architecture pitfalls

33

http://bravenewgeek.com/you-cannot-have-exactly-once-delivery/

Page 34: Microservices architecture pitfalls

you need idempotent APIs and events sinks

34

Page 35: Microservices architecture pitfalls

35

choreography > orchestration

Page 36: Microservices architecture pitfalls

So we’ve built Hermes a.k.a circulatory system

36

Page 37: Microservices architecture pitfalls

network can be congested!

37

Page 38: Microservices architecture pitfalls

REST+JSON on top of HTTP/1.1is fine

38

Page 39: Microservices architecture pitfalls

REST+JSON on top of HTTP/2.0with TLS is finer

39

Page 40: Microservices architecture pitfalls

we don’t rely on network anymore

net splits in public clouds happens everytime!

40

Page 41: Microservices architecture pitfalls

we adopted antifragile organization

41

Page 42: Microservices architecture pitfalls

42

Page 43: Microservices architecture pitfalls

powerful tandem

43

+

Reactive programming Circuit breaker pattern

Page 44: Microservices architecture pitfalls

you need to support non-native old services, clients

and systems

44

Page 45: Microservices architecture pitfalls

45

Page 46: Microservices architecture pitfalls

conclusion: constant architecture

improvement

46

Page 47: Microservices architecture pitfalls

47

Act II: operational troubles

Page 48: Microservices architecture pitfalls

creating new service should be instant!

48

Page 49: Microservices architecture pitfalls

49

Page 50: Microservices architecture pitfalls

automationwith gradle & axions

50

Page 51: Microservices architecture pitfalls

51

Page 52: Microservices architecture pitfalls

so now we’ve got over 1800 repositories grouped under

250 projects

52

Page 53: Microservices architecture pitfalls

all with CI, code quality checks,

security checks, integrated with sonar & artefact repository

53

Page 54: Microservices architecture pitfalls

but what withservices upgrades?

54

Page 55: Microservices architecture pitfalls

we’ve initially built our own service stack

… and it was ok - for a while

55

Page 56: Microservices architecture pitfalls

now we are extending spring-boot

with so called andamio project

56

Page 57: Microservices architecture pitfalls

rapid deployments integrated with CI/CD environment and canary tests are must-have

57

Page 58: Microservices architecture pitfalls

war files ▾

scp + puppet ▾

golden images ▾

docker (immutable images) ▾

58

Page 59: Microservices architecture pitfalls

frequency of changes →

automatedmonitoring, logging

& operational insights

59

Page 60: Microservices architecture pitfalls

graphite statsd cabot

tessera kibana

logstash zabbix

newrelic selena

pingdom …60

Page 61: Microservices architecture pitfalls

Monitoring As A Service +

SLA Monitoring +

61

Page 62: Microservices architecture pitfalls

we need to build real-time anomaly detection soon

62

Page 63: Microservices architecture pitfalls

63

Act III: organizational shift

Page 64: Microservices architecture pitfalls

strategic DDD is good for splitting up monolith

64

Page 65: Microservices architecture pitfalls

but leave tactical DDD up to teams

65

Page 66: Microservices architecture pitfalls

huge polyglot hangover

66

Page 67: Microservices architecture pitfalls

acquiring distributed skills

67

Page 68: Microservices architecture pitfalls

you build it - you run it

68

Page 69: Microservices architecture pitfalls

coupling avoidance

69

Page 70: Microservices architecture pitfalls

please don’t audit me

70

Page 71: Microservices architecture pitfalls

distributed (micro) data curation

71

Page 72: Microservices architecture pitfalls

So after two years…

72

Page 73: Microservices architecture pitfalls

73

Page 74: Microservices architecture pitfalls

Final thoughts

74

Page 75: Microservices architecture pitfalls

75

Page 76: Microservices architecture pitfalls

76

Page 77: Microservices architecture pitfalls

77

Page 78: Microservices architecture pitfalls

Thanks!

Any questions?

Visit our blog: allegrotech.io

Follow us on twitter: @allegrotechblog

Check our OSS projects: github.com/allegro

And meetup group: meetup.com/allegrotech

78