Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Паттерны распределённых систем в традициях коренных малочисленных народов Севера

Паттерны распределённых систем в традициях коренных малочисленных народов Севера

В этом докладе поговорим про паттерны, которые используются при построении распределённых систем. Слушатели смогут узнать не только о конкретных решениях, но и о проблемах, с которыми сталкиваются разработчики при переходе на распределённую архитектуру. Мы обсудим, почему эти проблемы возникают, какие есть пути их решения. Для наглядности все паттерны будут демонстрироваться на примере традиций и обычаев коренных малочисленных народов Севера. Этот доклад может быть полезен разработчикам, которые начинают или планируют заниматься микросервисами или сервис-ориентированными приложениями. Также доклад может быть интересен людям, которым любопытно узнать больше о жизни народов Севера.

Rival Abdrakhmanov

December 03, 2020
Tweet

More Decks by Rival Abdrakhmanov

Other Decks in Programming

Transcript

  1. О себе • Positive Technologies • Разработка распределенного приложения PT

    IPC • Санкт-Петербург • Нижневартовск, ХМАО-Югра 2
  2. 3

  3. Коренные малочисленные народы Севера • Коренные малочисленные народы Севера, Сибири

    и Дальнего Востока Российской Федерации (далее — малочисленные народы Севера) — народы численностью менее 50 тысяч человек, проживающие в северных районах России, в Сибири и на российском Дальнем Востоке на территориях традиционного расселения своих предков, сохраняющие традиционные образ жизни, хозяйствование и промыслы и осознающие себя самостоятельными этническими общностями. 13
  4. 14

  5. Сервис-ориентированная архитектура • Сервисы автономны • У сервисов явные границы

    • Сервисы предоставляют схемы и контракты, не классы • Совместимость сервисов основана на политиках Four Tenets of SOA 18
  6. Микросервисы • Лёгкая поддержка и тестирование • Слабая связанность •

    Независимый деплой • Построение вокруг бизнес требований • Разработка малой командой Сhris Richardson microservices.io 19
  7. Чум • Легко поддерживается • Никак не связан с другими

    чумами • Может устанавливаться независимо 24
  8. Чум • Легко поддерживается • Никак не связан с другими

    чумами • Может устанавливаться независимо • Бизнес-требование - выживание в тундре 25
  9. Чум • Легко поддерживается • Никак не связан с другими

    чумами • Может устанавливаться независимо • Бизнес-требование - выживание в тундре • Живёт одна семья 26
  10. 27

  11. 33

  12. Рыбаки и охотники • Взаимодействие с внешним миром • Рыбалка

    • Ловушки, запоры • Удочки, блесна, невод, острога 45
  13. Рыбаки и охотники • Взаимодействие с внешним миром • Рыбалка

    • Ловушки, запоры • Удочки, блесна, невод, острога • Охота 46
  14. Рыбаки и охотники • Взаимодействие с внешним миром • Рыбалка

    • Ловушки, запоры • Удочки, блесна, невод, острога • Охота • Ловушки, луки-самострелы 47
  15. Рыбаки и охотники • Взаимодействие с внешним миром • Рыбалка

    • Ловушки, запоры • Удочки, блесна, невод, острога • Охота • Ловушки, луки-самострелы • Луки и ружья 48
  16. Рыбаки и охотники • Взаимодействие с внешним миром • Рыбалка

    • Ловушки, запоры • Удочки, блесна, невод, острога • Охота • Ловушки, луки-самострелы • Луки и ружья • Разные типы охоты 49
  17. Синхронное взаимодействие • RPC • HTTP • Распространённость • Результат

    доступен сразу • Увеличивает связность сервисов 56
  18. Синхронное взаимодействие • RPC • HTTP • Распространённость • Результат

    доступен сразу • Увеличивает связность сервисов • Каскадные запросы 57
  19. Асинхронное взаимодействие • На основе сообщений • AMQP, SMTP •

    Виды: • Одностороннее • Асинхронный запрос-ответ • Pub/sub 61
  20. Асинхронное взаимодействие • На основе сообщений • AMQP, SMTP •

    Виды: • Одностороннее • Асинхронный запрос-ответ • Pub/sub • Повышает автономность сервисов 62
  21. Асинхронное взаимодействие • На основе сообщений • AMQP, SMTP •

    Виды: • Одностороннее • Асинхронный запрос-ответ • Pub/sub • Повышает автономность сервисов • Сложнее дизайн системы 63
  22. Асинхронное взаимодействие • На основе сообщений • AMQP, SMTP •

    Виды: • Одностороннее • Асинхронный запрос-ответ • Pub/sub • Повышает автономность сервисов • Сложнее дизайн системы • Асинхронные бизнес-сценарии 64
  23. Устойчивость к ошибкам • Игнорирование • Повторный вызов (retry) •

    Тайм-аут • Предохранитель (circuit breaker) • Идемпотентность 70
  24. Устойчивость к ошибкам • Игнорирование • Повторный вызов (retry) •

    Тайм-аут • Предохранитель (circuit breaker) • Идемпотентность • Компенсаторные действия 71
  25. Охота в группе • Охота на медведя • Один выманивает,

    остальные наготове • Экипировались ружьями и большими ножами, укрепленными в древке 76
  26. 77

  27. 78

  28. API Gateway Плюсы: • Скрытие API сервисов • Внутренние изменения

    • Выбор протокола • Безопасность • Меньшая задержка 89
  29. API Gateway Плюсы: • Скрытие API сервисов • Внутренние изменения

    • Выбор протокола • Безопасность • Меньшая задержка • Отделение общих функций 90
  30. 95

  31. 96

  32. Backend for frontend Плюсы: • API точнее соответствует клиенту •

    Выше автономность Минусы: • Дублирование функциональности 104
  33. Backend for frontend Плюсы: • API точнее соответствует клиенту •

    Выше автономность Минусы: • Дублирование функциональности • Выше сложность 105
  34. Бытовая деятельность • Разделение работы на мужскую и женскую •

    Промысел / ведение хозяйства • Оленевод / чумработница 121
  35. Бытовая деятельность • Мужские занятия: • Добыча рыбы и мяса

    • Заготовка и сдача пушнины • Уход за оленями 125
  36. Бытовая деятельность • Мужские занятия: • Добыча рыбы и мяса

    • Заготовка и сдача пушнины • Уход за оленями • Заготовка материалов для построек 126
  37. Бытовая деятельность • Мужские занятия: • Добыча рыбы и мяса

    • Заготовка и сдача пушнины • Уход за оленями • Заготовка материалов для построек • Изготовление инструментов 127
  38. Бытовая деятельность • Женские занятия: • Приготовление пищи • Заготовка

    дров • Создание утвари • Шитье одежды • Уход за детьми и гостями 134
  39. 135

  40. Choreography • Строится на событиях • Уменьшает связность • Позволяет

    легко добавлять новые сервисы • Обогащение/Pipes and Filters 140
  41. Choreography • Строится на событиях • Уменьшает связность • Позволяет

    легко добавлять новые сервисы • Обогащение/Pipes and Filters • Простые сценарии 141
  42. Choreography • Строится на событиях • Уменьшает связность • Позволяет

    легко добавлять новые сервисы • Обогащение/Pipes and Filters • Простые сценарии • Сложно понять текущее состояние процесса 142
  43. Choreography • Строится на событиях • Уменьшает связность • Позволяет

    легко добавлять новые сервисы • Обогащение/Pipes and Filters • Простые сценарии • Сложно понять текущее состояние процесса • Сложнее восстановление после сбоя 143
  44. 148

  45. 149

  46. Orchestration • Строится на командах • Conductor • Сложные сценарии

    • Централизованная обработка ошибок 154
  47. Orchestration • Строится на командах • Conductor • Сложные сценарии

    • Централизованная обработка ошибок • Единая точка отказа 155
  48. Orchestration • Строится на командах • Conductor • Сложные сценарии

    • Централизованная обработка ошибок • Единая точка отказа • Conductor склонен к разрастанию 156
  49. Предметы быта: обмен • Ярмарки • Торговля и обмен •

    Поддержание контактов • Уплата налога (ясак) 163
  50. 164

  51. 165

  52. 166

  53. 167

  54. 168

  55. 169

  56. 170

  57. 171

  58. 172

  59. 175

  60. Синхронный вызов сервиса • Запрос к другому сервису • Увеличивает

    связность • Каскадные запросы • Результат доступен сразу 176
  61. 177

  62. Event-Carried State Transfer Плюсы: • Уменьшает связность • Повышает автономность

    • Уменьшает задержку • Отложенная обработка 185
  63. Event-Carried State Transfer Минусы: • Согласованность в конечном счёте •

    Время на обновление • Большое количество данных в сообщениях 189
  64. Event-Carried State Transfer Минусы: • Согласованность в конечном счёте •

    Время на обновление • Большое количество данных в сообщениях • Большое количество подписок 190
  65. Предметы быта: создание • Жилища • Срубные наземные постройки •

    Каркас из жердей, крытый берестой, травой, ветками, сеном 195
  66. Предметы быта: создание • Жилища • Срубные наземные постройки •

    Каркас из жердей, крытый берестой, травой, ветками, сеном • Чум 196
  67. Предметы быта: создание • Одежда • Шкуры домашних оленей •

    Шкуры крупных копытных (дикий олень, лось) 199
  68. Предметы быта: создание • Одежда • Шкуры домашних оленей •

    Шкуры крупных копытных (дикий олень, лось) • Шкурки водоплавающих птиц 200
  69. Предметы быта: создание • Одежда • Шкуры домашних оленей •

    Шкуры крупных копытных (дикий олень, лось) • Шкурки водоплавающих птиц • Шкурки пушных зверей 201
  70. Предметы быта: создание • Одежда • Шкуры домашних оленей •

    Шкуры крупных копытных (дикий олень, лось) • Шкурки водоплавающих птиц • Шкурки пушных зверей • Рыбьи кожи 202
  71. Предметы быта: создание • Утварь • Дерево 204 Тазовский районный

    краеведческий музей goskatalog.ru/portal/#/museums?id=2578
  72. Предметы быта: создание • Утварь • Дерево • Береста 205

    Тазовский районный краеведческий музей goskatalog.ru/portal/#/museums?id=2578
  73. Предметы быта: создание • Утварь • Дерево • Береста •

    Шкуры зверей, птиц, рыб 206 Тазовский районный краеведческий музей goskatalog.ru/portal/#/museums?id=2578
  74. Предметы быта: создание • Утварь • Дерево • Береста •

    Шкуры зверей, птиц, рыб • Рога и кости 207 Тазовский районный краеведческий музей goskatalog.ru/portal/#/museums?id=2578
  75. 209

  76. 210

  77. UI Composition • Независимые компоненты • Компонент UI связан со

    своим сервисом • Кросс-функциональные команды 214
  78. UI Composition • Независимые компоненты • Компонент UI связан со

    своим сервисом • Кросс-функциональные команды • Инкапсуляция данных 215
  79. UI Composition • Независимые компоненты • Компонент UI связан со

    своим сервисом • Кросс-функциональные команды • Инкапсуляция данных • Сервис композиции и общего функционала 216
  80. UI Composition • Независимые компоненты • Компонент UI связан со

    своим сервисом • Кросс-функциональные команды • Инкапсуляция данных • Сервис композиции и общего функционала • Асинхронное взаимодействие ui-компонентов 217
  81. UI Composition Плюсы: • Меньшая связанность • Меньше кодовая база

    • Независимые команды Минусы: • Сложность 223
  82. UI Composition Плюсы: • Меньшая связанность • Меньше кодовая база

    • Независимые команды Минусы: • Сложность • Дублирование зависимостей 224
  83. Каслание • Перекочёвка оленьего стада • Протяженность маршрутов может достигать

    1500 км в год • Летние стоянки у моря • Зимние стоянки в лесотундре 229
  84. Каслание • Перекочёвка оленьего стада • Протяженность маршрутов может достигать

    1500 км в год • Летние стоянки у моря • Зимние стоянки в лесотундре • Сезонная смена нарт 230
  85. 233

  86. 234

  87. 235

  88. 237

  89. CQRS • Разделение чтения и записи • Взаимодействие пользователей и

    устаревшие данные • Внутри своего ограниченного контекста 240
  90. Команды • Базовая валидация команд • Нотификации • Уменьшение потенциальных

    неудач • Промежуточные бизнес-состояния • Отложенное выполнение 251
  91. 253

  92. Шаманизм 257 • Двоеверие: смесь православия и язычества • Шаман

    - посредник между мирами • Сейчас шаманов не осталось
  93. 258

  94. Ссылки (паттерны) • API Gateway и BFF • Orchestration •

    Choreography • Pub/sub • Event-Carried State Transfer • UI composition • Micro Frontends • CQRS 259
  95. Ссылки (народы Севера) • Курс Арзамаса "Открывая Россию: Ямал" •

    Курс Арзамаса "Антропология Севера: кто и как живет там, где холодно" • Этнографическая экспедиция «Настоящие люди» • Дмитрий Функ — Коренные малочисленные народы Сибири • Алексей Мосеевский — Народы Севера • Оленеводы Ямала • Музей кочевой культуры 260