Slide 1

Slide 1 text

Анохин Игорь < Бесшовные релизы глазами разработчика: обновляем код Облака без отключения API >

Slide 2

Slide 2 text

2
 Обо мне Более 8 лет в Python Веду канал Руковожу направлением платформенное разработки в K2 Cloud Красивая_картинка_спикера.png


Slide 3

Slide 3 text

3
 Материалы презентации

Slide 4

Slide 4 text

4
 K2 Cloud — первое публичное облако собственной разработки в России и часть экосистемы К2Тех. 
 Мы создаём инфраструктуру для бизнеса, где всё работает стабильно: от сервисов по моделям IaaS и PaaS до частных облаков и выделенных инсталляций (HaaS). В основе нашего подхода — ответственность за все части сложных комплексных проектов, которые реализуем по собственным высоким стандартам. 
 < 800+ > заказчиков уже доверяют нам свою инфраструктуру 
 < с 2009 > опыт работы на облачном рынке
 < 400+ > экспертов реализуют проекты любой сложности
 [ Про ]

Slide 5

Slide 5 text

5
 Зачем говорить про обновление?

Slide 6

Slide 6 text

6
 1) Бизнес хочет быстрого выпуска фичей Зачем говорить про обновление?

Slide 7

Slide 7 text

7
 1) Бизнес хочет быстрого выпуска фичей 2) Чем быстрее мы пишем код - тем быстрее мы делаем фичи Зачем говорить про обновление?

Slide 8

Slide 8 text

8
 1) Бизнес хочет быстрого выпуска фичей 2) Чем быстрее мы пишем код - тем быстрее мы делаем фичи 3) Чем проще код в проекте - тем быстрее мы его пишем Зачем говорить про обновление?

Slide 9

Slide 9 text

9
 1) Бизнес хочет быстрого выпуска фичей 2) Чем быстрее мы пишем код - тем быстрее мы делаем фичи 3) Чем проще код в проекте - тем быстрее мы его пишем 4) Апдейты напрямую влияют на сложность нашего кода. Зачем говорить про обновление?

Slide 10

Slide 10 text

10
 О чем сегодня поговорим? 4-х шаговый апдейт Что нужно сделать в коде, чтобы оно работало Обновление с окном обслуживания Обновление без простоя

Slide 11

Slide 11 text

11
 Обновление с окном обслуживания

Slide 12

Slide 12 text

12
 Обновление монолитного сервиса DB
 Service


Slide 13

Slide 13 text

13
 Обновление монолитного сервиса DB
 Service


Slide 14

Slide 14 text

14
 Обновление монолитного сервиса DB
 Request
 Response
 Service


Slide 15

Slide 15 text

15
 Обновление монолитного сервиса Schema
 DB
 Response
 Request
 Service


Slide 16

Slide 16 text

16
 Обновление монолитного сервиса Schema
 DB
 Response
 Request
 Service


Slide 17

Slide 17 text

17
 Обновление монолитного сервиса 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 18

Slide 18 text

18
 Обновление монолитного сервиса 2. Отключить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 19

Slide 19 text

19
 Обновление монолитного сервиса 3. Запустить миграции 2. Отключить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 20

Slide 20 text

20
 Обновление монолитного сервиса 4. Запустить сервис 3. Запустить миграции 2. Отключить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 21

Slide 21 text

21
 Обновление монолитного сервиса 4. Запустить сервис 3. Запустить миграции 2. Отключить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 22

Slide 22 text

22
 Обновление монолитного сервиса 4. Запустить сервис 3. Запустить миграции 2. Отключить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 23

Slide 23 text

23
 Обновление монолитного сервиса 4. Запустить сервис 3. Запустить миграции 2. Отключить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 24

Slide 24 text

24
 Обновление монолитного сервиса 4. Запустить сервис 3. Запустить миграции 2. Отключить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 25

Slide 25 text

25
 Обновление монолитного сервиса 2. Перезапустить сервис 1. Обновить код сервиса 
 Schema
 DB
 Response
 Request
 Service


Slide 26

Slide 26 text

26


Slide 27

Slide 27 text

27
 Big Bang Deployment

Slide 28

Slide 28 text

28
 Плюсы: Big Bang Deployment

Slide 29

Slide 29 text

29
 Плюсы: ● Разработчик просто пишет код Big Bang Deployment

Slide 30

Slide 30 text

30
 Big Bang Deployment Плюсы: ● Разработчик просто пишет код ● DevOps пишет простой CI по обновлению кода

Slide 31

Slide 31 text

31
 Big Bang Deployment Минусы: Плюсы: ● Разработчик просто пишет код ● DevOps пишет простой CI по обновлению кода

Slide 32

Slide 32 text

32
 Big Bang Deployment Минусы: ● Временная недоступность сервиса Плюсы: ● Разработчик просто пишет код ● DevOps пишет простой CI по обновлению кода

Slide 33

Slide 33 text

33
 Big Bang Deployment Минусы: ● Временная недоступность сервиса ● Имеет большой Blast Radius, поэтому подходит только для небольших сервисов Плюсы: ● Разработчик просто пишет код ● DevOps пишет простой CI по обновлению кода

Slide 34

Slide 34 text

34
 Big Bang Deployment в сложных приложениях Schema
 DB
 Response
 Request
 Service


Slide 35

Slide 35 text

35
 Big Bang Deployment в сложных приложениях Schema
 DB
 Response
 Request


Slide 36

Slide 36 text

36
 Big Bang Deployment в сложных приложениях DB
 Request
 Response
 Schema
 Balancer


Slide 37

Slide 37 text

37
 Проблема обновления реплик DB
 Schema
 Request
 Response
 Balancer


Slide 38

Slide 38 text

38
 Проблема обновления реплик DB
 Schema
 Request
 Response
 Balancer


Slide 39

Slide 39 text

39
 Проблема обновления реплик DB
 Schema
 Request
 Response
 Balancer


Slide 40

Slide 40 text

40
 Проблема обновления реплик DB
 Schema
 Request
 Response
 Balancer


Slide 41

Slide 41 text

41
 Проблема обновления реплик DB
 Schema
 Request
 Response
 Balancer


Slide 42

Slide 42 text

42
 Проблема обновления микросервисов DB
 Schema
 Balancer
 Request
 Response


Slide 43

Slide 43 text

43
 Проблема обновления микросервисов DB
 Schema
 Balancer
 Request
 Response


Slide 44

Slide 44 text

44
 Проблема обновления микросервисов DB
 Schema
 Balancer
 Request
 Response


Slide 45

Slide 45 text

45


Slide 46

Slide 46 text

46
 Big Bang Deployment с Maintenance Window DB
 Request
 Response
 Schema
 Balancer


Slide 47

Slide 47 text

47
 DB
 Request
 Response
 Schema
 Balancer
 Maintenance
 Big Bang Deployment с Maintenance Window

Slide 48

Slide 48 text

48
 Request
 Response
 Schema
 Balancer
 Maintenance
 DB
 Big Bang Deployment с Maintenance Window

Slide 49

Slide 49 text

49
 Request
 Response
 Schema
 Balancer
 Maintenance
 DB
 Big Bang Deployment с Maintenance Window

Slide 50

Slide 50 text

50
 Request
 Response
 Schema
 Balancer
 Maintenance
 DB
 Big Bang Deployment с Maintenance Window

Slide 51

Slide 51 text

51
 DB
 Request
 Response
 Schema
 Balancer
 Maintenance
 Big Bang Deployment с Maintenance Window

Slide 52

Slide 52 text

52
 DB
 Request
 Response
 Schema
 Balancer
 Maintenance
 Big Bang Deployment с Maintenance Window

Slide 53

Slide 53 text

53
 Big Bang Deployment API можно делать частично недоступным. В K2 Cloud во время обновления вы не можете управлять инфраструктурой, но виртуальные машины доступны. CREATE


Slide 54

Slide 54 text

54
 Big Bang Deployment API можно делать частично недоступным. В K2 Cloud во время обновления вы не можете управлять инфраструктурой, но виртуальные машины доступны. CREATE


Slide 55

Slide 55 text

55
 Big Bang Deployment API можно делать частично недоступным. В K2 Cloud во время обновления вы не можете управлять инфраструктурой, но виртуальные машины доступны. CREATE


Slide 56

Slide 56 text

56
 Big Bang Deployment API можно делать частично недоступным. В K2 Cloud во время обновления вы не можете управлять инфраструктурой, но виртуальные машины доступны. CREATE


Slide 57

Slide 57 text

57
 Big Bang Deployment Минусы: ● Временная недоступность сервиса ● Имеет большой Blast Radius, поэтому подходит только для небольших сервисов Плюсы: ● Разработчик просто пишет код ● DevOps пишет простой CI по обновлению кода

Slide 58

Slide 58 text

58
 Big Bang Deployment Минусы: ● Временная недоступность сервиса ● Имеет большой Blast Radius, поэтому подходит только для небольших сервисов Плюсы: ● Разработчик просто пишет код ● DevOps пишет простой CI по обновлению кода

Slide 59

Slide 59 text

59
 Big Bang Deployment Что нужно от приложения, чтобы сократить Blast Radius?

Slide 60

Slide 60 text

60
 Big Bang Deployment Graceful shutdown с обработкой Linux сигналов Что нужно от приложения, чтобы сократить Blast Radius?

Slide 61

Slide 61 text

61
 Big Bang Deployment Health-Check и Heartbeat Graceful shutdown с обработкой Linux сигналов Что нужно от приложения, чтобы сократить Blast Radius?

Slide 62

Slide 62 text

62
 Big Bang Deployment Health-Check и Heartbeat Иметь структурированные логи: request_id, app_version, host Graceful shutdown с обработкой Linux сигналов Что нужно от приложения, чтобы сократить Blast Radius?

Slide 63

Slide 63 text

63
 Big Bang Deployment Health-Check и Heartbeat Иметь структурированные логи: request_id, app_version, host Graceful shutdown с обработкой Linux сигналов Maintenance Service. Уметь работать с тем, что другой сервис ушёл в Maintenance
 Что нужно от приложения, чтобы сократить Blast Radius?

Slide 64

Slide 64 text

64
 Big Bang Deployment Health-Check и Heartbeat Иметь структурированные логи: request_id, app_version, host Graceful shutdown с обработкой Linux сигналов Maintenance Service. Уметь работать с тем, что другой сервис ушёл в Maintenance
 Фоновые задачи/очереди/кеши могут содержать старую структуру Что нужно от приложения, чтобы сократить Blast Radius?

Slide 65

Slide 65 text

65
 Иметь скрипт миграции БД, если вы боитесь Как откатить Big Bang Deployment

Slide 66

Slide 66 text

66
 Big Bang Deployment в K2 Cloud

Slide 67

Slide 67 text

67
 Big Bang Deployment в K2 Cloud

Slide 68

Slide 68 text

68
 Big Bang Deployment в K2 Cloud

Slide 69

Slide 69 text

69
 Big Bang Deployment в K2 Cloud RU-MSK


Slide 70

Slide 70 text

70
 Big Bang Deployment в K2 Cloud RU-MSK
 RU-SPB


Slide 71

Slide 71 text

71
 1) Количество железа растет
 Big Bang Deployment в K2 Cloud

Slide 72

Slide 72 text

72
 1) Количество железа растет
 2) Количество сервисов растет
 Big Bang Deployment в K2 Cloud

Slide 73

Slide 73 text

73
 1) Количество железа растет
 2) Количество сервисов растет
 3) Количество заказчиков растет
 Big Bang Deployment в K2 Cloud

Slide 74

Slide 74 text

74
 1) Количество железа растет
 2) Количество сервисов растет
 3) Количество заказчиков растет
 4) Требования заказчиков растет
 Big Bang Deployment в K2 Cloud

Slide 75

Slide 75 text

75
 1) Количество железа растет
 2) Количество сервисов растет
 3) Количество заказчиков растет
 4) Требования заказчиков растет
 
 <График двигается вверх и вправо>
 Big Bang Deployment в K2 Cloud

Slide 76

Slide 76 text

76
 Big Bang Deployment в K2 Cloud

Slide 77

Slide 77 text

77
 Обновление без простоя

Slide 78

Slide 78 text

78
 Обновление без простоя

Slide 79

Slide 79 text

79
 Обновление без простоя Blue-Green
 (Red-Black)

Slide 80

Slide 80 text

80
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 81

Slide 81 text

81
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 82

Slide 82 text

82
 Обновление без простоя Blue-Green
 (Red-Black) Actor
 Rolling Out (Canary, Ring-based)

Slide 83

Slide 83 text

83
 Обновление без простоя Blue-Green
 (Red-Black) Actor
 Rolling Out (Canary, Ring-based) Actor


Slide 84

Slide 84 text

84
 Обновление без простоя Blue-Green
 (Red-Black) Actor
 Rolling Out (Canary, Ring-based) Actor


Slide 85

Slide 85 text

85
 Обновление без простоя Blue-Green
 (Red-Black) Actor
 Rolling Out (Canary, Ring-based) Actor


Slide 86

Slide 86 text

86
 Обновление без простоя Blue-Green
 (Red-Black) Actor
 Rolling Out (Canary, Ring-based) Actor


Slide 87

Slide 87 text

87
 Обновление без простоя Blue-Green
 (Red-Black) Actor
 Rolling Out (Canary, Ring-based) Actor


Slide 88

Slide 88 text

88
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 89

Slide 89 text

89
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 90

Slide 90 text

90
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 91

Slide 91 text

91
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 92

Slide 92 text

92
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 93

Slide 93 text

93
 Обновление без простоя Blue-Green
 (Red-Black) Actor


Slide 94

Slide 94 text

94
 Обновление без простоя Blue-Green
 (Red-Black) Rolling Out (Canary, Ring-based) Actor
 Actor


Slide 95

Slide 95 text

95
 Обновление без простоя Blue-Green
 (Red-Black) Actor
 Rolling Out (Canary, Ring-based) Actor


Slide 96

Slide 96 text

96
 Обновление без простоя Rolling Out (Canary, Ring-based) Actor


Slide 97

Slide 97 text

97
 Обновление без простоя Rolling Out (Canary, Ring-based) Что нужно от DevOps:
 Actor


Slide 98

Slide 98 text

98
 Обновление без простоя Rolling Out (Canary, Ring-based) Что нужно от DevOps: kubectl set image \ deployment/application \ application=application:1.23.1 Actor


Slide 99

Slide 99 text

99
 Обновление без простоя Rolling Out (Canary, Ring-based) Что нужно от DevOps: kubectl set image \ deployment/application \ application=application:1.23.1 Actor


Slide 100

Slide 100 text

100
 Что нужно от разработчиков

Slide 101

Slide 101 text

101
 Как проходит Rolling Out Entity
 Response
 Request


Slide 102

Slide 102 text

102
 Как проходит Rolling Out Entity
 Response
 Request


Slide 103

Slide 103 text

103
 Как проходит Rolling Out Entity
 Response
 Request


Slide 104

Slide 104 text

104
 Как проходит Rolling Out Entity
 Response
 Request


Slide 105

Slide 105 text

105
 Как проходит Rolling Out Entity
 Response
 Request


Slide 106

Slide 106 text

106
 Как проходит Rolling Out Entity
 Response
 Request


Slide 107

Slide 107 text

107
 4-х шаговый апдейт: Как добавить новое поле

Slide 108

Slide 108 text

108
 4-х шаговый апдейт Entity
 Response
 Request


Slide 109

Slide 109 text

109
 4-х шаговый апдейт Entity
 Response
 Request
 Phone


Slide 110

Slide 110 text

110
 4-х шаговый апдейт Entity
 Response
 Request
 Phone
 Phone


Slide 111

Slide 111 text

111
 4-х шаговый апдейт Entity
 Response
 Request
 Phone
 Phone
 Phone


Slide 112

Slide 112 text

112


Slide 113

Slide 113 text

113
 4-х шаговый апдейт 0. Обновление схемы БД Entity
 Response
 Request
 ALTER TABLE users ADD COLUMN phone STRING DEFAULT NULL;

Slide 114

Slide 114 text

114
 4-х шаговый апдейт 0. Обновление схемы БД Entity
 Response
 Request
 ALTER TABLE users ADD COLUMN phone STRING DEFAULT NULL;

Slide 115

Slide 115 text

115
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 116

Slide 116 text

116
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 117

Slide 117 text

117
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 118

Slide 118 text

118
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 119

Slide 119 text

119
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 120

Slide 120 text

120
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 121

Slide 121 text

121
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 Entity
 Dual-Write Request
 Request
 Response
 Response


Slide 122

Slide 122 text

122
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 Entity
 Dual-Write Request
 Request
 Response
 Response


Slide 123

Slide 123 text

123
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 Entity
 Dual-Write Request
 Request
 Response
 Response


Slide 124

Slide 124 text

124
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 125

Slide 125 text

125
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 126

Slide 126 text

126
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 Entity
 Dual-Write Request
 Request
 Response
 Response


Slide 127

Slide 127 text

127
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 New Field
 Dual-Write Request
 Request
 Response
 Response


Slide 128

Slide 128 text

128
 4-х шаговый апдейт 1. Добавление нового сервиса Response
 Request
 Request
 Response
 Dual-Write Entity
 Entity


Slide 129

Slide 129 text

129
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 Entity
 Response
 Dual-Write Request
 Request


Slide 130

Slide 130 text

130
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 Response
 Entity
 Response
 Dual-Write Request
 Request


Slide 131

Slide 131 text

131
 4-х шаговый апдейт 1. Добавление нового сервиса Entity
 Entity
 Response
 Dual-Write Request
 Request


Slide 132

Slide 132 text

132
 4-х шаговый апдейт 2. Убираем старую запись в базу Код может читать оба варианта Entity
 Response
 Entity
 Dual-Write Request
 Request


Slide 133

Slide 133 text

133
 4-х шаговый апдейт 2. Убираем старую запись в базу Код может читать оба варианта Entity
 Response
 Entity
 Dual-Write Request
 Request


Slide 134

Slide 134 text

134
 4-х шаговый апдейт 2. Убираем старую запись в базу Код может читать оба варианта Entity
 Response
 Entity
 Dual-Write Dual-Read Request
 Request


Slide 135

Slide 135 text

135
 4-х шаговый апдейт 2. Убираем старую запись в базу Код может читать оба варианта Entity
 Response
 Request
 Entity
 Dual-Read

Slide 136

Slide 136 text

136
 4-х шаговый апдейт 2. Убираем старую запись в базу Код может читать оба варианта Entity
 Response
 Request
 Entity
 Dual-Read Request


Slide 137

Slide 137 text

137
 4-х шаговый апдейт 2. Убираем старую запись в базу Код может читать оба варианта Entity
 Response
 Request
 Entity
 Dual-Read

Slide 138

Slide 138 text

138
 4-х шаговый апдейт 3. Мигрируем данные. Убираем Default NULL Entity
 Response
 Request
 Entity
 Dual-Read

Slide 139

Slide 139 text

139
 4-х шаговый апдейт 4. Финальный релиз. Удаляем совместимый код Response
 Request
 Entity
 Dual-Read

Slide 140

Slide 140 text

140
 4-х шаговый апдейт 4. Финальный релиз. Удаляем совместимый код Response
 Request
 Entity


Slide 141

Slide 141 text

141
 Мы обновились!

Slide 142

Slide 142 text

142
 4-х шаговый апдейт. Как добавить поле в БД

Slide 143

Slide 143 text

143
 4-х шаговый апдейт. Как добавить поле в БД 1) Мигрируем БД. Добавляем новые поля так, чтобы старая версия приложения не заметила этого;
 2) Обновляем код. Он имеет записывать и читать как старый формат, так и новый. Он должен уметь принимать старый вид запросов
 3) Обновляем код. Читаем оба формата данных БД. Пишем только новый
 4) Мигрируем БД. Чистим базу, чтобы убрать старые записи;
 5) Обновляем код. Убираем поддержку чтения старого формата.


Slide 144

Slide 144 text

144
 4-х шаговый апдейт. Как убрать поле из БД

Slide 145

Slide 145 text

145
 4-х шаговый апдейт. Как убрать поле из БД 1) Обновляем код. Код предполагает, что поля МОЖЕТ НЕ БЫТЬ
 2) Мигрируем БД. Чистим базу, чтобы убрать старый код
 3) Обновляем код. Код УВЕРЕН, что поля нет


Slide 146

Slide 146 text

146
 4-х шаговый апдейт. Как переименовать поле в БД

Slide 147

Slide 147 text

147
 4-х шаговый апдейт. Как переименовать поле в БД 1) Добавляем новое поле в БД за 4.5 шага
 2) Удаляем старое поле из БД за 3 шага


Slide 148

Slide 148 text

148
 Как сделать Rolling-out проще?

Slide 149

Slide 149 text

149
 Как сделать Rolling-out проще? Response
 Request
 Entity


Slide 150

Slide 150 text

150
 Response
 Request
 Entity
 Как сделать Rolling-out проще?

Slide 151

Slide 151 text

151
 Response
 Request
 Entity
 Как сделать Rolling-out проще?

Slide 152

Slide 152 text

152
 Что нужно изменить в коде?

Slide 153

Slide 153 text

153
 Что нужно изменить в коде? Как можно меньше строгих валидаций:

Slide 154

Slide 154 text

154
 Что нужно изменить в коде? Как можно меньше строгих валидаций: a) Не валидировать лишние request поля на сервере b) Не валидировать лишние response поля на клиенте c) Не валидировать лишние поля из БД

Slide 155

Slide 155 text

155
 Что нужно изменить в коде? Как можно меньше строгих валидаций: a) Не валидировать лишние request поля на сервере b) Не валидировать лишние response поля на клиенте c) Не валидировать лишние поля из БД Иметь политику депрекации API для микросервисов и публичных клиентов. Новые API поля только добавлять.

Slide 156

Slide 156 text

156
 Что нужно изменить в коде? Как можно меньше строгих валидаций: a) Не валидировать лишние request поля на сервере b) Не валидировать лишние response поля на клиенте c) Не валидировать лишние поля из БД Иметь политику депрекации API для микросервисов и публичных клиентов. Новые API поля только добавлять. Убрать SQL. Если SQL - делать все поля с DEFAULT значениями


Slide 157

Slide 157 text

157
 Что нужно изменить в коде? Как можно меньше строгих валидаций: a) Не валидировать лишние request поля на сервере b) Не валидировать лишние response поля на клиенте c) Не валидировать лишние поля из БД Иметь политику депрекации API для микросервисов и публичных клиентов. Новые API поля только добавлять. Идемпотентность операции где это возможно Убрать SQL. Если SQL - делать все поля с DEFAULT значениями


Slide 158

Slide 158 text

158
 Что нужно изменить в коде? Использовать maintenance если релиз сложный Как можно меньше строгих валидаций: a) Не валидировать лишние request поля на сервере b) Не валидировать лишние response поля на клиенте c) Не валидировать лишние поля из БД Иметь политику депрекации API для микросервисов и публичных клиентов. Новые API поля только добавлять. Идемпотентность операции где это возможно Убрать SQL. Если SQL - делать все поля с DEFAULT значениями


Slide 159

Slide 159 text

159
 Rolling-Out апдейты - это технический компромисс

Slide 160

Slide 160 text

160
 Цените Maintenance Window

Slide 161

Slide 161 text

< Спасибо за внимание > @ANOKHIN_IT Анохин Игорь K2 Сloud
 Материалы доклада здесь