Разделение на модули и микросервисы
Мы дошли до программирования доменной модели аукциона. У нас уже есть подробное задание, которое теперь нужно реализовать в коде. Нужно будет разобраться с доменными контекстами и пройтись по пользовательским сценариям. Это мы рассмотрим в следующих скринкастах.
Но помимо аукциона нам будет крайне полезно более ёмко рассмотреть примеры из других предметных областей. Для этого мы проведём отдельный большой обобщающий практический стрим про декомпозицию кода на модули и микросервисы:
Для участников также будет полезен мой доклад на смежную тему:
Вертикальное разделение кода, тестов и конфигов
На стриме как раз дополним этот подход расcмотрением внутренностей этих модулей и способами взаимодействия между ними.
UPD: Нарисовали на стриме:
Для скидки можете сначала оформить подписку на скринкасты. А посмотреть в записи можете здесь:
Запись и может какие-то материалы остануться? (код..., может еще что-то)
Да, всё останется для участников
Добрый вечер, а сколько по времени будет стрим? Спасибо
Ориентируюсь на 4..5 часов с небольшими перерывами и ответами на вопросы
Значит, минимум на 8ч :)
Никита бывалый))
Получилось всего 6ч :)
Дмитрий, а можно будет чуть позже приобрести записи и материалы стрима? В текущий момент для меня изучение темы микросервисов рано, но попозже планирую погрузиться в эту тему.
Да, можно потом, но по возросшей цене.
Очень нужна информация про kubernetes. Будет ли в планах?
Будет в скринкастах.
Дмитрий, а подскажите в 22:00 по мск? или это по моему времени уже отображается?
В 18:00 по московскому. Это уже отображается по местному.
супер, значит тогда получится поприсутствовать. А может как нибудь помечать время, а то вдруг может кто еще не понял) если что вот так у меня отображается https://i.imgur.com/Y9FUICq.png
Пометил
я думаю, что будут еще косяки :) К примеру, у меня на компьютере региональные установки страны в которой я постояннно проживаю, или просто удобнее чтоб всё было на английском (все форматы), я на несколько месяцев уехал в другую страну, что ж мне установки в компе менять? Если б я случайно не заметил пост Владимира, то пришел бы в 17-00, а не в 16-00.
Урвал за 1700
Здравствуйте! вебинар рассчитан на тех кто уже работал с микро-сервисами? Или подойдет для тех, кто только начинает изучать эту тему?
Для всех будет интересен.
Дмитрий. Хотелось бы услышать для каких проектов уже стоит задумываться об использовании такой архитектуры. Только не ограничиваясь словами "большой и маленький", если большой то сколько и чего . Спасибо.
Если я куплю, то я автоматом куплю и подписку ?
Нет, подписка приобретается отдельно в кабинете.
Как обычно с задержкой) но ради такого стоит подождать))
Произошли технические шоколадки) Все будет ок
Стрим удался, хоть и понервничали в начале. Спасибо зрителям за интересную компанию и вопросы!
у меня ссылка так и не появилась. как можно получиь ссылку на запись?
Попробуйте обновить страницу
Спасибо за стрим! Всё прошло хорошо, было интересно и полезно)
Добрый день, спасибо за стрим! А можете подсказать как такое разделение на модульный монолит произвести для модуля Корзины. Так как ей все время нужны данные о пользователе, товаре, остатках, ценах, которые могут быстро менять. Плюс в ней могут быть какие-то системы скидок. То как в контроллере должен обрабатывать запрос содержимого корзины, добавление товара. Как внутри модуля корзины мы будем получать актуальные данные? Думал через подписчиков, но, например, цены в разных городах могут быть разные. И тут пользователь переключает город и соответственно все события изменения цен для нового города он ранее пропускал и уже нет возможности их актуализировать. В итоге у себя в реализацию пришёл к тому, что модуль Корзины сам ходит в кучи апи других модулей. Может есть более хитрые варианты?
Хочу поделиться своим мнением, пока нет ответа Дмитрия.
В целом по этой теме есть интересный доклад, как раз рассматривается пример с корзиной: https://youtu.be/MotE7e30jGM
Как и ответили выше, в простой корзине достаточно хранить только id товара и добавленное количество. А всё цены для отображения на сайте подтягивать на лету в момент запроса.
Обычно цены товаров нужно фиксировать только при заказе. В корзину их копировать нет смысла.
Для меня стим полезный, спасибо.
Вы показали как храните конфиги модулей не в общем каталоге /config, а индивидуально в каждом модуле. Они при этом все равно парсятя ВСЕ при каждом запросе (тем же laminas-config-aggregator)? Или есть способ парсить их только тогда, когда используется данный модуль? Ну, чтобы снизить время запроса в большом проекте..
В этом компоненте возможно включить кэширование готового массива в файл, передав файл:
и в продакшеновской конфигурации включив опцию:
Это будет экспортировать весь общий массив в файл, сэкономив нам время на сборку и merge всех массивов.
Но любое такое кеширование не позволяет экспортировать анонимные функции вроде наших фабрик:
Чтобы это работало нам нужно будет вынести эти фабрики в отдельные классы:
и в конфигурации указать имена этих классов:
Тогда у нас будет конфигурация в виде массива из строковых имён классов без анонимок.
Вот это развёрнутый ответ, каким он должен быть! Спасибо!
Я его понял так: Загружать конфиги по отдельности on-demand нельзя, но зато можно все кешировать в случае laminos-aggregator.
Очень крутой стрим, много полезной и новой для меня информации. Хотелось бы еще только больше практической части посмотреть как организовать всю эту свистопляску с джобами и очередями. Там где синхронные подписки — все понятно: есть событие, есть слушатель. А вот с асинхронностью и очередями как? Посмотреть бы как реализовывать это в коде, как все разложить. Спасибо!
Или войти через: