Микросервисы: первая кровь

122
1 Микросервис п е р в а я к р о в

Upload: -

Post on 13-Apr-2017

182 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Микросервисы: первая кровь

1

Микросервисып е р в а я к р о в ь

Page 2: Микросервисы: первая кровь

Сячин Максим

2

[email protected]

https://twitter.com/FinneTrolle

https://github.com/finnetrolle

Page 3: Микросервисы: первая кровь

3

Page 4: Микросервисы: первая кровь

4

Page 5: Микросервисы: первая кровь

5

Page 6: Микросервисы: первая кровь

6

Page 7: Микросервисы: первая кровь

7

Page 8: Микросервисы: первая кровь

8

Page 9: Микросервисы: первая кровь

9

Page 10: Микросервисы: первая кровь

10

Page 11: Микросервисы: первая кровь

Договоренности• Все что я рассказываю - мой личный

опыт

• Для вопросов будет секция QA в конце выступления

• Для больших вопросов - дискуссионная зона после выступления

11

Page 12: Микросервисы: первая кровь

12

А мне что с того?

Page 13: Микросервисы: первая кровь

Где набираетесь опыта?

• Собственные проекты

• Работа или фриланс

• Open source проекты

• Дипломные и научные работы

13

Page 14: Микросервисы: первая кровь

14

Page 15: Микросервисы: первая кровь

15

?

Page 16: Микросервисы: первая кровь

16

?

Page 17: Микросервисы: первая кровь

17

?

Page 18: Микросервисы: первая кровь

18

С монолитом - сложно

Но микросервисы - не монолит!

Page 19: Микросервисы: первая кровь

Проект с микросервисами - лучший вариант

работы для студента

19

Page 20: Микросервисы: первая кровь

20

Page 21: Микросервисы: первая кровь

21

Page 22: Микросервисы: первая кровь

Что мы делаем?

• Сопровождаем процесс подписки• Печатаем документы для сторон• Строим разные графики и отчеты

22

Page 23: Микросервисы: первая кровь

23

Page 24: Микросервисы: первая кровь

24

Page 25: Микросервисы: первая кровь

Что такое микросервисы?

25

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

-- James Lewis and Martin Fowler

Page 26: Микросервисы: первая кровь

26

Чем выше продуктивность - тем быстрее внедряется новая

функциональность

Чем дольше разрабатываем - тем больше функциональности

и тем выше сложность

http://martinfowler.com/microservices/

Page 27: Микросервисы: первая кровь

27

Page 28: Микросервисы: первая кровь

28

Page 29: Микросервисы: первая кровь

29

Page 30: Микросервисы: первая кровь

Грааль найден!

30

Page 31: Микросервисы: первая кровь

31

Page 32: Микросервисы: первая кровь

Monolith First32

Page 33: Микросервисы: первая кровь

33

Page 34: Микросервисы: первая кровь

34

Page 35: Микросервисы: первая кровь

Обязательные требования

• Реализуем интерфейсы для разбиения

• Не допускаем высокую связность• Поддерживаем высокую

дисциплину• Закладываем время на разбиение

35

Page 36: Микросервисы: первая кровь

36

Page 37: Микросервисы: первая кровь

37

Пер

вый

рели

з

Page 38: Микросервисы: первая кровь

Как Monolith First помог нашему проекту?

• Ускорен выпуск релиза (мы успели!)

• Определились границы между модулями

38

Page 39: Микросервисы: первая кровь

39

Page 40: Микросервисы: первая кровь

40

Page 41: Микросервисы: первая кровь

41

Page 42: Микросервисы: первая кровь

42

Page 43: Микросервисы: первая кровь

43

Page 44: Микросервисы: первая кровь

44

Page 45: Микросервисы: первая кровь

45

Page 46: Микросервисы: первая кровь

46

Page 47: Микросервисы: первая кровь

Недостатки большого количества сервисов

• Большая операционная сложность

• Труднее воспроизвести окружение для тестирования

• Отказы - это данность

47

Page 48: Микросервисы: первая кровь

Преимущества большого количества

сервисов• Горизонтальное масштабирование из

коробки

• Низкая связность между сервисами...

• ... и между командами!

• Каждая часть системы достаточно мала чтобы...

48

Page 49: Микросервисы: первая кровь

49

Найти небольшую задачу =>

Быстро разобраться =>

Быстро выполнить =>

Раньше начать приносить пользу =>

Page 50: Микросервисы: первая кровь

Хороший первый день на новой работе!

50

Page 51: Микросервисы: первая кровь

51

Page 52: Микросервисы: первая кровь

52

А как там у Netflix?

• Более 600 сервисов• Десятки тысяч нод EC2 в Amazon• Миллиарды запросов ежедневно

Page 53: Микросервисы: первая кровь

Команды ответственны за жизненный цикл

разработанных приложений

53

• Разработка• Релиз / деплой• Обслуживание сервисов в проде

Page 54: Микросервисы: первая кровь

54

Мояпрелесть!

Page 55: Микросервисы: первая кровь

55

Page 56: Микросервисы: первая кровь

56

Не все вокруг гвозди

Page 57: Микросервисы: первая кровь

57

Page 58: Микросервисы: первая кровь

58

Page 59: Микросервисы: первая кровь

Что лучше?

59

Page 60: Микросервисы: первая кровь

60

Зависит от задачи

Page 61: Микросервисы: первая кровь

61

Page 62: Микросервисы: первая кровь

62

Page 63: Микросервисы: первая кровь

63

Page 64: Микросервисы: первая кровь

64

Page 65: Микросервисы: первая кровь

65

Page 66: Микросервисы: первая кровь

66

Page 67: Микросервисы: первая кровь

67

Page 68: Микросервисы: первая кровь

68

Page 69: Микросервисы: первая кровь

69

Page 70: Микросервисы: первая кровь

70

Page 71: Микросервисы: первая кровь

71

Page 72: Микросервисы: первая кровь

72

Page 73: Микросервисы: первая кровь

73

Page 74: Микросервисы: первая кровь

74

Page 75: Микросервисы: первая кровь

75

Page 76: Микросервисы: первая кровь

76

Page 77: Микросервисы: первая кровь

77

Page 78: Микросервисы: первая кровь

78

Page 79: Микросервисы: первая кровь

Eventual consistency

79

Page 80: Микросервисы: первая кровь

Минусы зоопарка технологий

• Не всегда существуют лучшие практики

• Высокая общая сложность системы

• Больше сервисов для обслуживания

• Сложнее управлять разработкой

• Высокий риск появления SHOK

80

Page 81: Микросервисы: первая кровь

81

SingleHeadOfKnowledge

Дорога в ад для любого проекта

Page 82: Микросервисы: первая кровь

Плюсы свободы выбора инструментов

• Каждой задаче - лучший инструмент

• Новое взамен устаревшего

• Расширяет кругозор

82

Page 83: Микросервисы: первая кровь

83+ 10 скиллов в резюме

Page 84: Микросервисы: первая кровь

84

Наш скромный стек

Page 85: Микросервисы: первая кровь

85

Page 86: Микросервисы: первая кровь

86

Page 87: Микросервисы: первая кровь

87

Композитный ответ

Особо жирный JSON

Page 88: Микросервисы: первая кровь

Композитный JSON

88

http://catalogue/api/subscription/1234

Page 89: Микросервисы: первая кровь

Какая цена для издания 1234 в регионе с кодом 44?

89

Page 90: Микросервисы: первая кровь

90

Page 91: Микросервисы: первая кровь

91

subscription.getRegionalOptions().stream() .filter(o -> o.getTcfpsCode().equals("44")) .findFirst() .get().getPriceGroup();

Page 92: Микросервисы: первая кровь

92

subscription.getPriceGroups().stream() .filter(g -> g.getId().equals( subscription.getRegionalOptions().stream() .filter(o -> o.getTcfpsCode().equals("44")) .findFirst() .get().getPriceGroup())) .findFirst() .get().getPrice();

Page 93: Микросервисы: первая кровь

93

http://catalogue/api/subscription/1234/prices

Page 94: Микросервисы: первая кровь

94

http://catalogue/api/subscription/1234/region/908/priceMin

Page 95: Микросервисы: первая кровь

95

Richardson maturity model

Page 96: Микросервисы: первая кровь

96

Дольше делать API

Page 97: Микросервисы: первая кровь

97

• Результат качественнее

• Экономия трафика

• Экономия ресурсов

Page 98: Микросервисы: первая кровь

Вы приблизитесь к искусству создания

красивого и функционального

API

98

Page 99: Микросервисы: первая кровь

Эволюция API

99

Page 100: Микросервисы: первая кровь

100

Page 101: Микросервисы: первая кровь

101

Серьезно?!

Page 102: Микросервисы: первая кровь

Что хотелось бы?

• Вовремя узнавать об изменениях API внешних сервисов

• Иметь возможность поддерживать изменения в течение времени, не сразу

• И знать как мигрировать

102

Page 103: Микросервисы: первая кровь

103

Expand and Contract

Page 104: Микросервисы: первая кровь

104

Expand and Contract

Page 105: Микросервисы: первая кровь

105

Expand and Contract

Page 106: Микросервисы: первая кровь

106

Expand and Contract

Page 107: Микросервисы: первая кровь

107

Page 108: Микросервисы: первая кровь

API v1 -> v2 migration timeline

• 28 июня 2016 - API v1 становится deprecated

• 28 сентября 2016 - ваши новые пользователи получат уведомление

• 28 марта 2017 - все ваши пользователи получат уведомление по email

• 28 июня 2017 - API v1 будет выключен

108

Page 109: Микросервисы: первая кровь

109

API v1 -> v2 migration guide

Page 110: Микросервисы: первая кровь

110

Page 111: Микросервисы: первая кровь

Отмечено, что• Быстрее "въезжаешь" в проект

• Понимание оркестрации приходят постепенно

• Знакомишься с новыми технологиями

• Определяешься с любимой специализацией

111

Page 112: Микросервисы: первая кровь

112

Свой любимый микросервис

Page 113: Микросервисы: первая кровь

Проект с микросервисами - лучший вариант

работы для студента

113

Page 114: Микросервисы: первая кровь

114

Говорят, вы перешли на микросервисы

И как они вам?

Page 115: Микросервисы: первая кровь

115

Page 116: Микросервисы: первая кровь

116

Использовали Monolith First

правильно

Page 117: Микросервисы: первая кровь

117

Следилиза вашим

зоопаркомсервисов

Page 118: Микросервисы: первая кровь

118

Каждой задачесвой инструмент

Page 119: Микросервисы: первая кровь

119

Тщательно продумывалиAPI вашихприложений

Page 120: Микросервисы: первая кровь

120

Изменяли APIпо паттерну

Expand and

Contract

Page 121: Микросервисы: первая кровь

121

Page 122: Микросервисы: первая кровь

122