На канале iSpring Tech вы найдёте записи митапов, проводимых компанией iSpring, доклады разработчиков iSpring на конференциях и другие видео по разработке ПО.
Пятерка на протяжении 24(42) минут жестко наваливает про бэкенд
@leshen_deaf17 күн бұрын
Отличный доклад! Тоже столкнулся с описанными проблемами монолита и пришел к тому же решению, что и вы. Больше всего понравилась структура доклада и целостность повествования. Ну, и спикер, конечно, тоже супер, этого не отнять)
@goriaevАй бұрын
Вопрос с участием отвечающего парня - там паттерн аутбокс по сути обсуждали. А следующий парень хороший вопрос задал (~54 минута), только его не поняли, мне кажется, ответили "попробуйте, у нас не так". В его вопросе становится несколько единиц развертывания и он предлагает микросервисы
@gorynych55Ай бұрын
Материал хорошо изложен. Спасибо. 5 копеек про паттерн outbox, кажется пример нет очень удачно подобран. На другом конце сидит пользователь и в синхроне ждет , что его переведут на оплату например, мы не можем этого сделать, так не отправили сообщение о бронировании. При таком кейсе надо думать доп сценарий , сейчас не можем зайдите позже. Но это лишнее усложне, с непонятой конверсией. Делать это придется во всех сервисах. На мой взгляд в таких кейсах лучше сразу отказать по техническим причинам и откатить , что необходимо, запомнить д данные заявки и пригласить клиента снова создать заявку после решения проблем. Данные старой заявки использовать для автозаполнения. Т.е. когда есть "синхронный" путь клиента применять паттер outbox надо оценивая , как меняется сценарий клиента и сколько сложности это добавит.
@bluesdemon13 ай бұрын
Делать внутри критической секции вызов к внешнему сервису - изначально кривая реализация, так делать нельзя. Вместо того, чтобы переписать кривой участок кода правильно - увеличили потолок коннектов. Смешные
@eugenesazonov27353 ай бұрын
Здраствуйте! Спасибо за прекрасный доклад. Не подскажите как выполнена интеграция SpiceDB c API Gateway?
@user-davidtema3 ай бұрын
Офигеть)
@den-rad3 ай бұрын
Спасибо за интересные доклады
@ivanmilov73444 ай бұрын
кажется немного не хватает финального бенчмарка
@user-davidtema3 ай бұрын
Он и был в начале. Валентин показал устройство позже.
@ayaz.ayupov5 ай бұрын
спасибо
@dimabezludnev9477 ай бұрын
уже 8 лет существует magefile
@nikitqa69857 ай бұрын
lame
@Shindos-Kopernik7 ай бұрын
Илья спасибо за доклад!
@dmitryd15727 ай бұрын
Интересный материал, большое спасибо !
@emotional_stuff8 ай бұрын
спасибо
@mt89vein8 ай бұрын
кафка (да и в целом любой брокер) не реализует exactly once без поддержки приложения. Можно взять сообщение в обработку, работу сделать, но упасть при коммите оффсета и обработчик снова возьмет это сообщение в работу. Приложение должно убедиться что еще не было выполнено и только потом выполнять обработку
@kubitre_motonos8 ай бұрын
неплохой тулинг, спасибо
@microb37269 ай бұрын
Информация безусловно очень интересная и познавательная. Но зачем фокусировать видео на ораторе вместо того чтобы показать что там на доске? Оператор муж ее?😊
@alex-0x6b9 ай бұрын
Спасибо. Contract-first рулит, но мне еще предстоит в этом убедиться.. 🙂
@MOVxR3210 ай бұрын
Класс! Спасибо большое за это видео, очень интересно, жаль презентацию нельзя скачать
@MOVxR3210 ай бұрын
Классный доклад, спасибо за него
@boblako10 ай бұрын
жпт 3.5 апнули, теперь с кирилицей намного лучше работает. Сужу по качеству ответов. Не знаю правда как насчет токенов изменилась ли ситуация, я просто как пользователь.
@POEOneLove10 ай бұрын
Начинаю погружаться в JS фреймворки после PHP, в частности Laravel других фреймворков. И просто не понимаю что они имеют ввиду тут под сущностью. Открываешь пример проекта который, как бы использует FSDdesign и оказывается что в сущности появляется UI то есть сущность не только модель, но и отображение... При этом теже папки UI распиханы в каждом слайсе помимо общего. feature/blog-item/ui, widget/blog-list/ui и тд. Черт возьми, на вид это вообще никак не упрощает. Если есть на проекте UI, почему он размазан повсюду в каждой части. По идее UI это вид, UI элементы просто должны получать данные и только отображать их. А Entity только содержать бизнес логику... Никакой связи с тем, как эта логика должна отображаться... В общем муть какая-то
@POEOneLove3 ай бұрын
@@flatstorycentury Разобрался.
@user-ll2xw7tn6v Жыл бұрын
кли, рэтри.....😀 си-эл-ай, ре-трай.
@user-ll2xw7tn6v Жыл бұрын
почему российские компании до сих пор используют анти-паттерны с синхронной коммуникацией между микро сервисами и костыли, которые из этого вытекают в лице дискавер или разрыва цепи? МСА = асинхронность. По-умолчанию.
@user-jd2xr7bf2t Жыл бұрын
go-micro класс если что можно поманить некотрые компоненты
@batazor Жыл бұрын
можно будет презентации получить?
@kavai9 Жыл бұрын
Да, скоро выложим записи докладов и презентации :)
@codingfox Жыл бұрын
Нужно говорить прямо в микрофон, максимально близко к нему)
@victorklimov5254 Жыл бұрын
Очень познавательно! Спасибо!
@user-ni7ge7ne7s Жыл бұрын
Отличное выступление, почти слезу пустил от ностальгии. Достаточно полезно взглянуть на то что было, чтобы понять что сейчас
@f00b4r123 Жыл бұрын
Прикольно. Спасибо за доклад.
@goocarry_dailyroutine Жыл бұрын
Круто
@stasfirsov Жыл бұрын
Cпасибо за инфу, но звук...мне кажется я слышал как у докладчика волосы ростут..слышно каждый вдох и выдох.. Чувствительность надо убавить.
@user-bi3kx5uf6d Жыл бұрын
Ребят вы бы хотя бы презентацию продублировали в видео, нихрена не видно
@iSpringTech Жыл бұрын
Вы можете посмотреть презентацию по ссылке - ispri.ng/11Vqk
@user-br3hw1us7k Жыл бұрын
Если честно люди которые там по ходу повествования встревали со своими "ну очень важными уточнениями" вели себя крайне неуважительно для вопросов есть время в конце доклада а не по середине.
@pavelerokhin1512 Жыл бұрын
ты молодец!
@star0dub Жыл бұрын
Спасибо за доклад. В 2022ом году goswagger по-прежнему не совместим с популярными http- библиотеками?
@ilyakaznacheev2160 Жыл бұрын
Не думаю, что когда-нибудь станет. By-design в go-swagger генерируются типизированные хендлеры (как в grpc, например), а большинство библиотек заточено под работу с http.Handler. Я не смотрел на него давно, может там появились какие-то проставки для middleware, но в целом много ждать не стоит.
@MAGAVHEBRON Жыл бұрын
За IO в mutex расстрел на месте, либо в штрафбат к говнокодерам.
@SntrTube Жыл бұрын
Поймут лишь не все
@brothers_karamazovs Жыл бұрын
Интересный доклад, спасибо!)
@user-ll2xw7tn6v Жыл бұрын
Нарушение правила 1 сервис - 1 база породило свой велосипед с промежуточным читателем событий (ещё одна точка отказа причем в том же месте где и брокер). Если бы у вас был инстанс сервиса (с базой) для каждого клиента, раз они так хотят, тогда бы не нужно было бы придумывать этот велосипед. Первый клиент нагородил бы 1000 сообщений для своего сервиса, а второй для своего. И Все бы они параллельно пошли в инстансы клиентов.
@kavai9 Жыл бұрын
Спасибо, что посмотрели доклад) Правила 1 сервис - 1 база, 1 клиент - 1 база, 1 клиент - 1 сервис отличаются друг от друга. Ваш вариант решения скорее всего сработает, но потребует огромных инфраструктурных расходов ввиду постоянно растущего количества клиентов и постоянно растущем количестве сервисов (а на каждого клиента придётся создавать не 1 сервис, а полный набор из всех сервисов). Про правило "1 сервис - 1 база" - правило соблюдается, у каждого микросервиса своя база, в рамках монолита каждый модуль обладает своим набором таблиц и не читает данные из таблиц других модулей, только через ACL. Можете почитать статью по мотивам доклада, может там найдёте недостающий контекст - habr.com/ru/company/ispring/blog/569648/
@user-ll2xw7tn6v Жыл бұрын
Спецификация - это не пример сервиса по DDD. Сервис - это логика, которую невозможно положить только в один из агрегатов. Пример такой логики - возврат денег от одного агрегата другому, от заёмщика - кредитору. А спецификация - вообще не сервис, а класс, инкапсулирующий условия и ограничений. Например условия выборки из репозитория определённых данных. Либо же это инкапсуляция нескольких бизнес операций. Сервисы - самый распространённый класс в DDD потому что банальный СRUD с изменением это сервис, который вызывает фабрику и создаёт агрегат, потом что-то обновляет для него, производит какой-то перерасчёт в этом агрегате, а затем репозиторием сохраняет. И всё это делается в таким сервисом, а не, скажем, в контроллере API как любят туда пихать всё. Контроллер в апи всё что умеет - валидировать DTO, вызывать сервисы или репозитории и слать правильные HTTP-коды ошибок (200, 401) .
@kavai9 Жыл бұрын
Тут у вас немного перемешались понятия. Давайте обратимся к литературе: "When a significant process or transformation in the domain is not a natural responsibility of an ENTITY or VALUE OBJECT, add an operation to the model as a standalone interface declared as a SERVICE. Define the interface in terms of the language of the model and make sure the operation name is part of the UBIQUITOUS LANGUAGE. Make the SERVICE stateless.". Работа с несколькими агрегатами из вашего примера, особенно с учётом подхода "1 агрегат - 1 сервис", больше похожа на сагу (зависит от логики вложенной в конкретную реализацию, конечно). А сервис уровня домена - это бизнес логика (бизнес процесс или преобразование в модели), которая не относится к естественным обязанностям сущности или объекта-значения и не имеет состояния. Является ли класс "спецификация" сервисом - это менее однозначный вопрос, под рукой Эванса нет, потом гляну, как он называет их. Но суть в том, что спецификации - это бизнес логика без состояния, заключающаяся в проверке соответствия некоторым правилам. Спецификация и её логика не может быть вложена в конкретную сущность, поскольку работает с коллекцией сущностей. По определению "domain service" совпадает. Интересно, что на эту тему пишет Эванс)
@ev_geniy172 жыл бұрын
Тест
@antonshakhmatov58782 жыл бұрын
Вы меня извините конечно, но какой двинутый это снимал? Человек объясняет, на стену проецируется наглядный пример и мне показывают рассказчика вместо того чтобы показать то что он объясняет. Вы нормальные?
@moravsky51152 жыл бұрын
*Exellent job!*
@rainysky842 жыл бұрын
>>>> "В наших руках абсолютно всё сейчас" Вот теперь заживём! 😃😃😃
@pro_gen94172 жыл бұрын
думаю за такие слоганы можно получить пару лет тюрьмы
@institute_ispring2 жыл бұрын
Уважаемый pro_gen, мы видим в слогане весьма позитивную формулировку и искренне не разделяем ваше мнение. Любой слоган, фраза, высказывание корректно воспринимается лишь неразрывно с контекстом. Возможно вы восприняли заголовок через призму своего мировосприятия и поторопились написать комментарий, не посмотрев трейлер и не прочитав описание. Либо вам не удалось разглядеть контекст в трейлере или в описании. В любом случае рекомендуем вам посмотреть полную версию фильма, ссылка есть в описании к видео. Уверены, что после просмотра у вас не возникнет подобных мыслей.
@nickname201512 жыл бұрын
блин ну почему я этот доклад не увидел два года назад( прям все мои вопросы закрыло. спасибо большое.
@jmatveeva2 жыл бұрын
Рада, что было полезно!
@ruslanm.11209 күн бұрын
@@jmatveeva подскажите названия книжек не получилось расслышать? Классный доклад, в прошлом проекте делали что-то похожее, но тогда я не знал как это называется :)
@jmatveeva9 күн бұрын
@@ruslanm.1120 По-моему, я там упоминала книгу Vaughn Vernon "Implementing Domain Driven Design". Сейчас бы я ещё рекомендовала книгу Vlad Khononov "Learning Domain-Driven Design", must read. Есть на русском вроде бы обе, но лучше в оригинале, конечно
@user-jy6en6jf9s2 жыл бұрын
Звук, ребята, что с озвучкой?
@iSpringTech2 жыл бұрын
Добрый день! А что именно вас беспокоит со звуком?
Пікірлер
Пятерка на протяжении 24(42) минут жестко наваливает про бэкенд
Отличный доклад! Тоже столкнулся с описанными проблемами монолита и пришел к тому же решению, что и вы. Больше всего понравилась структура доклада и целостность повествования. Ну, и спикер, конечно, тоже супер, этого не отнять)
Вопрос с участием отвечающего парня - там паттерн аутбокс по сути обсуждали. А следующий парень хороший вопрос задал (~54 минута), только его не поняли, мне кажется, ответили "попробуйте, у нас не так". В его вопросе становится несколько единиц развертывания и он предлагает микросервисы
Материал хорошо изложен. Спасибо. 5 копеек про паттерн outbox, кажется пример нет очень удачно подобран. На другом конце сидит пользователь и в синхроне ждет , что его переведут на оплату например, мы не можем этого сделать, так не отправили сообщение о бронировании. При таком кейсе надо думать доп сценарий , сейчас не можем зайдите позже. Но это лишнее усложне, с непонятой конверсией. Делать это придется во всех сервисах. На мой взгляд в таких кейсах лучше сразу отказать по техническим причинам и откатить , что необходимо, запомнить д данные заявки и пригласить клиента снова создать заявку после решения проблем. Данные старой заявки использовать для автозаполнения. Т.е. когда есть "синхронный" путь клиента применять паттер outbox надо оценивая , как меняется сценарий клиента и сколько сложности это добавит.
Делать внутри критической секции вызов к внешнему сервису - изначально кривая реализация, так делать нельзя. Вместо того, чтобы переписать кривой участок кода правильно - увеличили потолок коннектов. Смешные
Здраствуйте! Спасибо за прекрасный доклад. Не подскажите как выполнена интеграция SpiceDB c API Gateway?
Офигеть)
Спасибо за интересные доклады
кажется немного не хватает финального бенчмарка
Он и был в начале. Валентин показал устройство позже.
спасибо
уже 8 лет существует magefile
lame
Илья спасибо за доклад!
Интересный материал, большое спасибо !
спасибо
кафка (да и в целом любой брокер) не реализует exactly once без поддержки приложения. Можно взять сообщение в обработку, работу сделать, но упасть при коммите оффсета и обработчик снова возьмет это сообщение в работу. Приложение должно убедиться что еще не было выполнено и только потом выполнять обработку
неплохой тулинг, спасибо
Информация безусловно очень интересная и познавательная. Но зачем фокусировать видео на ораторе вместо того чтобы показать что там на доске? Оператор муж ее?😊
Спасибо. Contract-first рулит, но мне еще предстоит в этом убедиться.. 🙂
Класс! Спасибо большое за это видео, очень интересно, жаль презентацию нельзя скачать
Классный доклад, спасибо за него
жпт 3.5 апнули, теперь с кирилицей намного лучше работает. Сужу по качеству ответов. Не знаю правда как насчет токенов изменилась ли ситуация, я просто как пользователь.
Начинаю погружаться в JS фреймворки после PHP, в частности Laravel других фреймворков. И просто не понимаю что они имеют ввиду тут под сущностью. Открываешь пример проекта который, как бы использует FSDdesign и оказывается что в сущности появляется UI то есть сущность не только модель, но и отображение... При этом теже папки UI распиханы в каждом слайсе помимо общего. feature/blog-item/ui, widget/blog-list/ui и тд. Черт возьми, на вид это вообще никак не упрощает. Если есть на проекте UI, почему он размазан повсюду в каждой части. По идее UI это вид, UI элементы просто должны получать данные и только отображать их. А Entity только содержать бизнес логику... Никакой связи с тем, как эта логика должна отображаться... В общем муть какая-то
@@flatstorycentury Разобрался.
кли, рэтри.....😀 си-эл-ай, ре-трай.
почему российские компании до сих пор используют анти-паттерны с синхронной коммуникацией между микро сервисами и костыли, которые из этого вытекают в лице дискавер или разрыва цепи? МСА = асинхронность. По-умолчанию.
go-micro класс если что можно поманить некотрые компоненты
можно будет презентации получить?
Да, скоро выложим записи докладов и презентации :)
Нужно говорить прямо в микрофон, максимально близко к нему)
Очень познавательно! Спасибо!
Отличное выступление, почти слезу пустил от ностальгии. Достаточно полезно взглянуть на то что было, чтобы понять что сейчас
Прикольно. Спасибо за доклад.
Круто
Cпасибо за инфу, но звук...мне кажется я слышал как у докладчика волосы ростут..слышно каждый вдох и выдох.. Чувствительность надо убавить.
Ребят вы бы хотя бы презентацию продублировали в видео, нихрена не видно
Вы можете посмотреть презентацию по ссылке - ispri.ng/11Vqk
Если честно люди которые там по ходу повествования встревали со своими "ну очень важными уточнениями" вели себя крайне неуважительно для вопросов есть время в конце доклада а не по середине.
ты молодец!
Спасибо за доклад. В 2022ом году goswagger по-прежнему не совместим с популярными http- библиотеками?
Не думаю, что когда-нибудь станет. By-design в go-swagger генерируются типизированные хендлеры (как в grpc, например), а большинство библиотек заточено под работу с http.Handler. Я не смотрел на него давно, может там появились какие-то проставки для middleware, но в целом много ждать не стоит.
За IO в mutex расстрел на месте, либо в штрафбат к говнокодерам.
Поймут лишь не все
Интересный доклад, спасибо!)
Нарушение правила 1 сервис - 1 база породило свой велосипед с промежуточным читателем событий (ещё одна точка отказа причем в том же месте где и брокер). Если бы у вас был инстанс сервиса (с базой) для каждого клиента, раз они так хотят, тогда бы не нужно было бы придумывать этот велосипед. Первый клиент нагородил бы 1000 сообщений для своего сервиса, а второй для своего. И Все бы они параллельно пошли в инстансы клиентов.
Спасибо, что посмотрели доклад) Правила 1 сервис - 1 база, 1 клиент - 1 база, 1 клиент - 1 сервис отличаются друг от друга. Ваш вариант решения скорее всего сработает, но потребует огромных инфраструктурных расходов ввиду постоянно растущего количества клиентов и постоянно растущем количестве сервисов (а на каждого клиента придётся создавать не 1 сервис, а полный набор из всех сервисов). Про правило "1 сервис - 1 база" - правило соблюдается, у каждого микросервиса своя база, в рамках монолита каждый модуль обладает своим набором таблиц и не читает данные из таблиц других модулей, только через ACL. Можете почитать статью по мотивам доклада, может там найдёте недостающий контекст - habr.com/ru/company/ispring/blog/569648/
Спецификация - это не пример сервиса по DDD. Сервис - это логика, которую невозможно положить только в один из агрегатов. Пример такой логики - возврат денег от одного агрегата другому, от заёмщика - кредитору. А спецификация - вообще не сервис, а класс, инкапсулирующий условия и ограничений. Например условия выборки из репозитория определённых данных. Либо же это инкапсуляция нескольких бизнес операций. Сервисы - самый распространённый класс в DDD потому что банальный СRUD с изменением это сервис, который вызывает фабрику и создаёт агрегат, потом что-то обновляет для него, производит какой-то перерасчёт в этом агрегате, а затем репозиторием сохраняет. И всё это делается в таким сервисом, а не, скажем, в контроллере API как любят туда пихать всё. Контроллер в апи всё что умеет - валидировать DTO, вызывать сервисы или репозитории и слать правильные HTTP-коды ошибок (200, 401) .
Тут у вас немного перемешались понятия. Давайте обратимся к литературе: "When a significant process or transformation in the domain is not a natural responsibility of an ENTITY or VALUE OBJECT, add an operation to the model as a standalone interface declared as a SERVICE. Define the interface in terms of the language of the model and make sure the operation name is part of the UBIQUITOUS LANGUAGE. Make the SERVICE stateless.". Работа с несколькими агрегатами из вашего примера, особенно с учётом подхода "1 агрегат - 1 сервис", больше похожа на сагу (зависит от логики вложенной в конкретную реализацию, конечно). А сервис уровня домена - это бизнес логика (бизнес процесс или преобразование в модели), которая не относится к естественным обязанностям сущности или объекта-значения и не имеет состояния. Является ли класс "спецификация" сервисом - это менее однозначный вопрос, под рукой Эванса нет, потом гляну, как он называет их. Но суть в том, что спецификации - это бизнес логика без состояния, заключающаяся в проверке соответствия некоторым правилам. Спецификация и её логика не может быть вложена в конкретную сущность, поскольку работает с коллекцией сущностей. По определению "domain service" совпадает. Интересно, что на эту тему пишет Эванс)
Тест
Вы меня извините конечно, но какой двинутый это снимал? Человек объясняет, на стену проецируется наглядный пример и мне показывают рассказчика вместо того чтобы показать то что он объясняет. Вы нормальные?
*Exellent job!*
>>>> "В наших руках абсолютно всё сейчас" Вот теперь заживём! 😃😃😃
думаю за такие слоганы можно получить пару лет тюрьмы
Уважаемый pro_gen, мы видим в слогане весьма позитивную формулировку и искренне не разделяем ваше мнение. Любой слоган, фраза, высказывание корректно воспринимается лишь неразрывно с контекстом. Возможно вы восприняли заголовок через призму своего мировосприятия и поторопились написать комментарий, не посмотрев трейлер и не прочитав описание. Либо вам не удалось разглядеть контекст в трейлере или в описании. В любом случае рекомендуем вам посмотреть полную версию фильма, ссылка есть в описании к видео. Уверены, что после просмотра у вас не возникнет подобных мыслей.
блин ну почему я этот доклад не увидел два года назад( прям все мои вопросы закрыло. спасибо большое.
Рада, что было полезно!
@@jmatveeva подскажите названия книжек не получилось расслышать? Классный доклад, в прошлом проекте делали что-то похожее, но тогда я не знал как это называется :)
@@ruslanm.1120 По-моему, я там упоминала книгу Vaughn Vernon "Implementing Domain Driven Design". Сейчас бы я ещё рекомендовала книгу Vlad Khononov "Learning Domain-Driven Design", must read. Есть на русском вроде бы обе, но лучше в оригинале, конечно
Звук, ребята, что с озвучкой?
Добрый день! А что именно вас беспокоит со звуком?
@@iSpringTech Все фонит.
Спасибо.