- 21
- 32 457
Digital Train | Alex Babin
เข้าร่วมเมื่อ 22 ต.ค. 2011
Channel for those who want to understand Software Development & IT. Get deep knowledge of how the industry works.
If you are a system or business analyst, automated or manual tester, software engineer, or planning to become - Welcome! 🚀
If you are a system or business analyst, automated or manual tester, software engineer, or planning to become - Welcome! 🚀
"Как стать ИТ руководителем/Тимлидом без опыта работы"
В этом видео я разберу основные заблуждения о том почему сложно или невозможно стать ИТ руководителем, тимлидом, техлидом или руководителем департамента с 0-вым опытом
Telegram: t.me/digital_train
Boosty: boosty.to/digital_train
Описание и рассматриваемые темы:
00:00 Введение
01:43 Кто такой идеальный руководитель?
11:36 Основные заблуждения о том как стать руководителем
22:29 Путь к цели или как стать ИТ лидом
28:47 Выводы
Telegram: t.me/digital_train
Boosty: boosty.to/digital_train
Описание и рассматриваемые темы:
00:00 Введение
01:43 Кто такой идеальный руководитель?
11:36 Основные заблуждения о том как стать руководителем
22:29 Путь к цели или как стать ИТ лидом
28:47 Выводы
มุมมอง: 152
วีดีโอ
Event-driven архитектура - обзор Golden template | Event-driven architecture golden template
มุมมอง 1243 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train Описание и рассматриваемые темы: 00:00 Введение 01:03 Рассмотрение паттерна и проблем 05:35 Минимально необходимые компоненты паттерна 14:48 Имплементация Golden template на Rust 20:25 В следующем видео Примеры Golden template для других ЯП Java: github.com/ericus20/spring-boot-starter Go-lang: github.com/harmannkibue/golang-gin-clean...
Event-driven архитектура - обзор компонентной архитектура | Event-driven architecture E-commerce
มุมมอง 2124 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train Описание и рассматриваемые темы: 00:00 Введение 01:38 Обзор layered архитектуры 11:05 Обзор компонентов архитектуры 19:25 В следующем видео
Event-driven архитектура обзор процессов | Event-driven architecture E-commerce
มุมมอง 2665 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train Описание и рассматриваемые темы: 00:00 Введение 00:38 Модуль Заказов 07:28 Модуль Корзины 12:52 Модуль Пользователя 17:44 Модуль Аутентификации и авторизации 20:45 Модуль Каталога 28:35 В следующем видео архитектура для E-commerce,Event-driven архитектура для E-commerce,архитектура для E-commerce | Event-driven,архитектура для E-comme...
Event-driven архитектура для E-commerce | Event-driven architecture E-commerce
มุมมอง 1K5 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train Описание и рассматриваемые темы: 00:00 Введение 03:17 Разбираем основные блоки E-commerce 34:30 В следующих лекциях. архитектура для E-commerce,Event-driven архитектура для E-commerce,архитектура для E-commerce | Event-driven,архитектура для E-commerce | Event-driven architecture,driven архитектура для E-commerce,Digital train | Alex ...
Тебе не нужен ментор | You don't need a mentor
มุมมอง 9166 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train Описание и рассматриваемые темы: 00:00 Кто такой ментор 23:30 Правильная постановка цели 37:15 Где можно найти ментора 44:05 Разбор кейса переезда в Австралию Ссылка на исследование: www.ncbi.nlm.nih.gov/pmc/articles/PMC10828695/ Тебе не нужен ментор,нужен ментор | You don't need,нужен ментор | You don't need a mentor,Тебе не нужен ме...
Паттерны микросервисной архитектуры часть 2| Microservices architecture patterns part 2
มุมมอง 1.5K6 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train Рассмотрим основные паттерны микросервисной архитектуры из следующих областей: ➕ Тестирование (CDC Service layer) ➕ UI composition ➕ Circuit breaker ➕ Немного Security & Cross-cutting concerns Полезные ссылки: docs.pact.io micro-frontends.org www.openidentityplatform.org/blog/stateless-vs-stateful-authentication Описание: 0:00 Введени...
С нуля на ML engineer в Amazon на 120к | Zero to Amazon ML engineer 120k
มุมมอง 9256 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train В видео поговорим о том как можно с нуля устроиться в Amazon Рассмотрим примеры того как лучше всего готовится к собеседования и на что обратить внимание Таймкоды: 00:00:00 Знакомство 00:03:32 ML-engineer/Data science engineer/Data engineer 00:07:40 Зарплата ML engineer в Amazon 00:10:40 Как попасть в Amazon 00:18:25 Процесс интервью ...
Тестируем контракты через Kafka на Java | Java Autotest Microservices
มุมมอง 8077 หลายเดือนก่อน
В предыдущем видео: Что такое Kafka и чем она отличается от RabbitMQ, ссылка: th-cam.com/video/lCgsTV3rP0Y/w-d-xo.html Telegram: t.me/digital_train Boosty: boosty.to/digital_train Таймкоды: 00:00 Приветствие 00:45 Описание тестируемого микросервиса 01:25 Разбираем код тестируемого сервиса 05:12 Пример кода для теста на Java 07:00 Запуск теста и разбор ошибок 14:00 Итог контракты через Kafka на ...
Тестируем контракты через Kafka на GoLang
มุมมอง 3067 หลายเดือนก่อน
В предыдущем видео: Что такое Kafka и чем она отличается от RabbitMQ, ссылка: th-cam.com/video/lCgsTV3rP0Y/w-d-xo.html Telegram: t.me/digital_train Boosty: boosty.to/digital_train Таймкоды: 00:00 Приветствие 00:36 Контрактное-тестирование 01:32 Пример тестируемого микросервиса и частые проблемы 20:53 Итог
Контрактное тестирование микросервисов с использование Kafka
มุมมอง 7567 หลายเดือนก่อน
Telegram: t.me/digital_train Boosty: boosty.to/digital_train В этом видео мы рассмотрим контрактное тестирование микросервисной архитектуры когда два микросервиса общаются между собой с помощью Kafka Таймкоды: 00:00 Приветствие 00:24 Е2Е и контрактное тестирование 03:31 Тестирования через kafka 05:24 Практика
Разбираем основы Kafka и RabbitMQ
มุมมอง 13K7 หลายเดือนก่อน
Разберем основные компоненты архитектуры Kafka и RabbitMQ Посмотрим use case в индустрии и примеры использования Telegram: t.me/digital_train Boosty: boosty.to/digital_train Таймкоды: 00:00 Немного обо мне 01:23 RabbitMQ Архитектура и особенности 10:15 Kafka Архитектура и особенности 18:56 Push vs Pulll подходы и примеры использования 25:20 Доп. материал
Как учиться быстрее | Learning strategy
มุมมอง 3917 หลายเดือนก่อน
Как Учиться Быстрее??? Что выбрать менторство, курсы или школы В этом видео рассмотрим основные способы обучения и доступные материалы. Стратегии и подходы к тому как стать инженером, аналитиком или тестировщиком Подписывай на мой канал: t.me/digital_train Описание: 00:00 Вступление 00:40 Виды обучения Стратегии обучения 35:00 С минимальными вложениями 36:43 Сбалансированный №1 37:35 Сбалансиро...
Go lang middle interview | Интервью на позицию Go lang middle
มุมมอง 5347 หลายเดือนก่อน
Интервью на позицию Go lang middle engineer Поговорим про теоритическую базу Go lang, немного про GC и про подходы к построению API Так же попишем алгоритмы Описание: 00:00 Знакомство 01:10 Теория 26:25 Теория - Ревью ответов 29:10 Практика 40:00 Практика - Ревью 41:35 Обсуждение вопросов
Python middle+ algorithm interview | Алгоритмы на Python middle + мок интервью
มุมมอง 3497 หลายเดือนก่อน
Рассмотрим как правильно писать алгоритмы на python Мок интервью python middle Описание: 00:00 Приветствие 02:05 Бинарный поиск 07:55 Бинарный поиск (рекрсивно) 12:50 Функция flatten (делаем список одноуровневым) 35:10 Функция flatten для списков и кортежей
Паттерны микросервисной архитектуры часть 1| Microservices architecture patterns part 1
มุมมอง 2.4K7 หลายเดือนก่อน
Паттерны микросервисной архитектуры часть 1| Microservices architecture patterns part 1
Microservices architecture for everyone
มุมมอง 7797 หลายเดือนก่อน
Microservices architecture for everyone
Тестирование микросервисов | Microservices testing
มุมมอง 1.6K7 หลายเดือนก่อน
Тестирование микросервисов | Microservices testing
Webinar: Методологии управления проектом для Project manager
มุมมอง 2138 หลายเดือนก่อน
Webinar: Методологии управления проектом для Project manager
Самое подробнное видео в интернете. И не только в ру сегменте
а что за термин диджитал эксперт и что такое ставки в пайплайнах? )))) я что-то отстал от жизни похоже )))
Диджитал эксперт - на половину консультант на половину архитектор/разрабочик
Я правильно понимаю что на мидл такие вопросы не задают ?
Не все, но задают)
@@digital_train хочу добавить, что видео очень интересное получилось
Хорошее интервью, молодцы
Спасибо. Отличная подача материала. Можно в том числе слушать фоном параллельно с какими то делами - воспринимается хорошо.
Спасибо за видео и за полезные ресурсы
Как раз по тестированию опыта и не хватает, на всех проектах, где работал, были тестеры, а нам разработчикам время не выделяли на написание тестов. Кроме простых юнит тестов не писал. А вот интересно, как тестировать сложные событийные микро сервисы и вообще, что мы там должны тестировать
Один из подходов это интеграционое тестирование и тестирование на основе контрактов, детальнее можно тут посмотреть - softwaremill.com/testing-microservices-contract-tests/
А почему так мало теоретических вопросов на мидла? Где спринг, хибернейт, базы данных?
@@ВасилийГоловко-д9и формат в 1 час не позволяет нормально разобрать и теорию и практику. Либо стоит ставить два смешных либо одно теоретическое одно практическое
@@digital_train понял. Для меня конечно вопросы интереснее будут. У вас что хорошо получается это понять что кандидат имеет понимание вопроса, а не просто заучил ответы. Ждём собеседования на синьеров
про адаптер паттерн вроде мимо было объяснение - он нужен когда у нас есть одна структура данных, но на вход интерфейса необходимы другая структура, и через адаптер мы преобразовываем эти данные. Как в начал он привел пример розеток -есть розетки европейские и американские, для них как раз и нужен адаптер, чтобы ты мог прибор с европейской розеткой засунуть в американскую розетку с тремя входами
27:00 так парень все про это как раз и рассказал. Главное ему быть более уверенным и не говорить, что мало практики. Так как он все грамотно отвечал. И видно, что не просто заучил, а есть понимание как это все работает. Мне понравилось. Интереснее смотреть именно собеседование middle и senior. Сам как раз сейчас собираюсь проходить собеседование, и надо именно подтянуть теорию. Подписка
Отвечающий: "Если у них одинаковый хэш код, то они должны быть равны и по equals...", чта, рили 🤦🏻♂️???
Если equals равны то хэшкод должен быть одинаковый, обратное не верно)
(right + left) / 2 -> можем получить переполнение по инту. Середина в бинарном поиске ищется через left + (right - left) / 2 В рекурсии также не учтен вариант когда мы должны получить -1 В целом собес понравился, подписка😄
public static int name(int[] array, int target) { boolean res = false; int index = 0; for (int i = 0; i < array.length; i++) { if (target == array[i]) { index = i; res = true; break; } } if (!res) { index = -1; } return index; } }
@@vollkovfamilly это полный перебор O(n) Бинарный поиск дает лучший результат на отсортированных данных O(log n)
public static int name(int[] array, int target) { // return IntStream.range(0, array.length) // .filter(i -> array[i] == target) // .findFirst() // .orElse(-1); // } //}
Сто это за новый синтаксис -> ?
щас бы в 2024 году на собеседовании просить бинарный поиск рекурсивно написать...
@@SarkhanTakhirov а какие задачи стоит давать для разогрева?
@@digital_train кодревью, лайвкод зашквар
Меня одного смущает, что видео о Java, а на превью код на JavaScript?
@@aau8 пасхалка
Про линкед лист вообще что-то странное. Линкедлист СЛИШКОМ специфичная структура данных, в первую очередь линкедлист слаб тем, что данные по памяти разбросаны, соответственно даже банальная итерация в нем происходит дольше
@@Ополз ArrayList наше все
На заметку мужичку, если тебя интервьюер перебивает, значит он услышал твой ответ и хочет уточнить еще что-то, не стоит повышать голос с целью «не перебивайте меня, я договорить хочу»
согласен
Спасибо ❤️
Жду когда дойдем до параллельных транзакций😅😮
Немного путаный ответ про массив и LinkedList - спросили же про массив, а не ArrayList. И ответ тут будет - когда у нас кейс, где нам важен фиксированный по количеству и упорядоченный набор значений, и чтобы еще и все это работало очень быстро. Только в этом редком кейсе нужен массив, в остальных случаях применяем ArrayList.
Спасибо за видео. Скажите а название паттерна golden template это название которое вы сами придумали? Просто гугол по запросу golden template pattern ничего по сути не выдает (ну кроме всяких золотых шаблонов для дезайнеров).
Это скорее внутрнее название, чаще его можно найти под словом Template pattern Подробнее можно посмотреть тут: th-cam.com/video/M5tEithMH6o/w-d-xo.htmlsi=GDLW6z0Gq0pqmth9&t=1826 Почитать тут: microservices.io/patterns/service-template.html
Спасибо за интересное видео. Единственное тема CQRS до конца не расскрыта. Надеюсь услышать подробности в следующих видео. В частности интересует почему и как разделяется command и query, везде ли оно надо (например так ли оно надо например в auth сервисе вашего примера) и если надо то почему так а не иначе. В общем жду новых видео с подробностями.
Полезная информация. Хочу порекомендовать выделить самое главное, основное "в двух словах" и выделить это интонацией, потому что бывает сложно слушать монотонную речь и пытаться понять и запомнить основную мысль. Ещё можно в конце основные мысли коротко повторить
Спасибо за обратную связь!
про меседж брокер все понятно, кафка, рэбитмку. А оркестрация, что это за механизм? Я прослушал инструментарий?
Есть два подхода к организации взаимодействий в микросервисах/распределенных системах 1. Хореография - каждый микросервис общается напрямую с сервисами которые ему необходимы 2. Оркестрация - есть центральный сервис через который происходит все общение между микросервисами В зависимости от требований подходит то или иное решение. Как пример нетфликс в свое время начинал с хореографии, но когда длительными процессами стало сложно управлять они перешли на оркестрацию Подробности можно тут почитать: habr.com/ru/articles/831814/
Ну про микросервисы и монолит ответ слабый был.
@@AfromA-bu1bh хй у тебя слабый ))
@@MrRomanvideo боюсь спросить откуда инфа?)))
нормально он ответил на этот вопрос
Спасибо за информацию.
Требуем больше таких видео!
47:49 Если человек решает задачу но у вас возникают какие то сомнения в его технике набора текста, в таких случаях лучше всё же уточнять эти моменты у человека, в чём дело и не строить догадки/сомнения)))) p.s. А, я не расслышал момент что у кандидата + проблемы с базовыми задачками. Тогда уже да, больше сомнений) Я был в подобной ситуации по написанию кода и не подумал бы что у кого то могут быть какие то там подозрения в голове по моему написанию, тем более если задача решена:) А причина была в том что я сменил технику(купил новый ноутбук) и не привык ещё к немного другой раскладке, особенно функциональная кнопка "Fn" вместо "Ctrl":))) Но я вроде озвучил это после пару кривых мискликов) Но всё же, всякое бывает, не показатель:)
Абсолютно согласен, поэтому стоит на интервью смотреть в комплексе. На практике очень быстро становится понятно если у человека большой опыт
02:21 Java хэш-мап: устройство и использование 06:23 Понимание операций со связанными списками имеет решающее значение для оптимизации производительности. 08:13 Оптимизация макета интервью в Java middle+ с использованием собственных вызовов функций 11:50 Начинать с микросервисов оправдано при определенных условиях 13:34 Рассмотрите возможность разбиения монолита на микросервисы для минимальных накладных расходов. 16:55 Высокий уровень абстракции приводит к сложности кода 18:23 Нетворкинг и обмен данными 21:36 Синхронное взаимодействие в Java 23:15 Понимание алгоритма и его практическая реализация на собеседованиях по Java 26:37 Производительность и интеграция 27:56 Обсуждение асинхронного кодирования на Java 32:29 Использование двоичного поиска для поиска среднего элемента массива 36:59 Понимание того, как перемещаться и корректировать границы во время двоичного поиска. 44:51 Попытка кодировать 47:08 Реализация рекурсивной функции 53:42 Обсуждение базового алгоритма двоичного поиска 55:42 Эффективность работы с базовыми коллекциями - ключевой навык
спасибо! автор прошел в миллиметре от утверждения что в кафке нет acnowledgment однако, прошел, лайк:)
Минусы монолита описанные как будто бы больше на мифы смахивают (особенно если смотреть на них не в вакууме, а сравнивать с микросервисами): - "в монолите сложно понять какой модуль на какой влияет", - не согласен. Сложно понять какие микросервисы друг на друга влияют (сама по себе трассировка, сервис дискавери, поиск проблем и отслеживание циклических вызовов, совместимость апи и прочие проблемы), как и в целом сопровождение микросервисов на порядок сложнеее чем совпровождение монолита, тк в случае монолита простым поиском по коду проекта или дебаггером все можно просмотреть и в билд тайме 99% ошибок взаимодействия ловить можно, надо только те же самые хорошие практики современные использовать чтобы не скатывать все к "big ball of mud" - "сложно масштабировать" - какая по сути разница копию всего приложения развернуть или только его части? разверните X копий (или настройте автоскейл горизонтальный как вам надо) и если нагрузка на модуль платежей будет выше чем нагрузка на модуль такси, то просто какой-то больший процент реплик будет занят обработкой платежей, а какой-то меньший процент реплик займет обработка запросов такси. Ну и в крайних случаях, если очень хочется, можно вынести какой-нибудь ОДИН модуль из монолита, не трогая большую часть других модулей. - "гибкость и простота разаработки, обновления" - ну так если у вас монолит модульный, вы можете эти модули как угодно тасовать, менять и тд (и в том числе, как уже упоминал выше, можно вынести некоторые модули из монолита если такая потребность по какой-то очень важной причине настанет). По поводу истории с булевыми флагами и тестированием - уже давно придумали разные стратегии выкатки сложных обнвлений - типо канареек , фича флагов, A/B и прочих стратегий, которые в монолите тоже можно применять схожим образом как и в случае с микросервисами
Спасибо за развернутый ответ По первому пункту - речь идет о протекании абстракций, в микросервисах эта проблема отсутствует т.к. код физически разделен network и общается через API (предлагаю случаи с некорректно построенной архитектурой, API не рассматривать). Отсюда есть большой плюс, что локальное внесение изменений в код (без изменений API) не может сломать код в другом микросервисе По второму пункту - про содержание микросервисов, в видео это отмеченно, что микросервисы требуют дополнительных затрат т.к. все процессы тестировния, логирования и тд нам нужно поддерживать для всех микросервисов. В монолите за счет меньшего количество сущностей администрирование упрощается По третьему пункту - про масштабирование. Если в монолите мы изначально заложим возможность масштабирования, то в этом случае можно эволюционно прийти к скейлинга отдельных модулей (выделяя их или нет). Часто так бывает, что монолит пишут без видения того что инстансов может быть несколько и как следствие даже простейшее создание второго инстанса может быть проблемой, в отличии от микросервисов где это является ключевым вопросов (то есть мы его никак не потеряем) По последнему пункту - про обновления, действительно если в код заложить систему плагинов то ей можно управлять так же гибко как и в случае с микросервисами, системой флагов или другими механизмами (бренчинг и тд). Но как показывает практика никто этого не делает и в большинстве случаев код прийдется переписывать. Резюмирую - если архитектор с головой то он и монолит построит такой, что большой части проблем удастся избежать. Плюс микросервисов здесь в том что все эти вопросы мы разбираем на самом первом этапе проектирования
Автор красава, ахуенный материал
Спасибо. За полчаса всё по полочкам разложил
Спасибо за видео. Очень интересное но как по мне уж слишком поверхностное. Автор подчеркивает важность демонстрации практического опыта на собеседовании но именно этого самого практического опыта использования этих паттернов автором в этом видео и не хватает. Надеюсь в будующих видео будет что-то основанное на реальных проектах. Хотя возможно для начинающих видео будет полезно чтобы не искать по гуглам все эти паттерны.
Всё доходчиво) Возник вопрос по поводу JWT. Допустим есть API Gateway сервис и Security сервис, который после первоначальной проверки имя:пароль генерирует JWT, используя RSA шифрование и отдает его клиенту. Каким образом лучше всего осуществить проверку этого токена, не отправляя каждый запрос от клиента в Security, у которого (только!) есть доступ к RSA ключам? Сейчас на Gateway применяется фильтр, который отправляет запросы к другим микросервисам сначала в Security на верификацию JWT. Как-то криво по-моему(
Есть несколько подходов, если я правильно понял ваш случай - это случай когда для каждого микросервиса мы осуществляет запрос и проверку токена, такой подход отлично работает с точки зрения безопасности, но у него есть минусы и один из основных это проблема масштабирования (при большом количестве микросервисов и запросов рост нагрузки будет экспоненциальным). В таком случае чаще всего переходят на аутентификацию на edge (по перимитру), что сильно упрощает масштабирование, но снижает "строгость" проверок для каждого вызова внутри безопасной зоны Подробно данных подход хорошо изложен в блоге Netflix (они как раз столкнулись с проблемой управления и масштабирования) - netflixtechblog.com/edge-authentication-and-token-agnostic-identity-propagation-514e47e0b602
ммм алгоритм бинарного поиска на несколько минут дольше писал и хоткеи не использует. боже дай сил окружающим интервьюера)))
Та он вообще душный, по теории мужчина ответил на все!!!, что потом ведущий перечислил, что это не сказал. Конкретно тел про взаимодействие между мткросервисами.
контент супер! Спасибо вам
Мне кажется автор натягивает сову на глобус говоря, что RabbitMQ это про Push. Сам брокер не знает адреса потребителей, они к нему подключаются и запрашивают новые сообщения. Это только запутывает
Действительно это может немного смущать что rabbitmq ориентирован на push based. В нем есть два типа API push & pull но в большинстве случаев используется push подход (www.rabbitmq.com/docs/consumers#subscribing )
Пили про аутентификацию, всегда актуально)
Спасибо. Еще бы добавить nats/nats streaming.
Оч круто! Если можно покажите тесты на gRPC пожалуйста
Доступно. Понятно. Без воды. Лайк. Подписка.
спасибо!!!
Топ контент! Спасибо
Очереди сообщений не нужны практически никогда! Для этого есть обратный прокси и балансировщик nginx/Apache.
Действительно в самых простых случая очередь можно заменить на реверс + LB Но это только часть функциональности, очереди так же: - Автоматически масштабируются при добавлении и удалении нод из кластера - Могут гарантировать транзакционность и использовать различные стратегии доставки - Часть из очередей могут использоваться в виде хранилища events в event-driven архитектуре - Так же поверх них удобно строить real-time стримы данных и событий и не переживать за то что какой-то из consumer упадет Важно посмотреть на кейс и уже после решать нужна ли очередь или нет
@@digital_train - Балансировщик тоже может добавлять и удалять ноды - Если пользователь не получает ответ в течении 30 секунд, то в большинстве случаев он перестает его ждать и уходит. Поэтому нет смысла накапливать сообщения в надежде когда-то там обработать все. - Событийная архитектура усложняет разработку, если система не помещается на сервер, то лучше использовать шардирование, а не разбиение на подсистемы, что связаны событиями. - После падения консюмеров забивается и падает очередь, что делает ее бессмысленной для спасения. Проще разруливать падение на клиенте путем повторных запросов.
Есть задачи, в которых поток запросов имеет ярко выраженные короткие пики, а в остальное время почти ноль. В этих случаях, если время ответа некритично или ответ вообще не предусмотрен, очередь очень помогает дешево разгрузить обработчики.
поддержка видосиков комменто-лайком
Оч круто!! Спасибо
У меня вопрос по event sourcing. Вот Вы сказали, что мы каждый шаг пользователя фиксируем. Имеется ввиду прям i/o фиксация в бд. Или у нас просто собираются данные в некую коллекцию, а затем по завершении действий пользователем делаем запись в бд? При втором варианте конечно есть риск потери данных при сбое, но первый вариант кажется суперзатратным, все таки идёт постоянная запись в бд. Если юзер просто играется и добавляет товар через плюсик по одному до 20шт, затем удаляет, для меня это 20 транзакций?😢
Отличный вопрос, спасибо что задали его! Действительно если рассмотреть реальную систему то такой подход будет слишком трудозатратен с тз "бека". Поэтому в примере с обычным e-commerce это будет слишком накладно + потеря корзины пользователя который ушел на несколько часов не так критична С другой стороны если мы продаем что-то на что есть жесткий лимит и пользователь будет сильно разочарован в случае отказа - например билет на самолет ил театр, то стоит фиксировать не саму корзину а событие старта процесса покупки тем самым мы снизим нагрузку на "бек", а с другой стороны сможем обеспечить гарантию только одной продажи для пользователя
@@digital_train спасибо, теперь понял.
Про multi stage pipeline очень вскользь сказано, хотелось бы на конкретном примере. Например как организовать транзакцию когда идет целый ряд событий как результат одного. К примеру типовая ситуация: заказ от пользователя (оплата-пересчет остатков-информирование).
Отличный вопрос, как раз разбирали его на теме про паттерны микросервисной архитектуры. Если коротко - транзакционность между микросервисами это дорого и сложно, но есть подходы к организации Тут пример th-cam.com/video/ViCD4ERj578/w-d-xo.htmlsi=M7WRUakxvd6PIYtH 1. Event sourcing 2. Saga pattern