Модульный PHP монолит как альтернатива микросервисной архитектуре - Юлия Николаева, iSpring

  Рет қаралды 6,999

iSpring Tech

iSpring Tech

Күн бұрын

Доклад о том, как решить проблемы монолитного PHP приложения, не переходя на микросервисную архитектуру
Ссылка на презентацию: ispri.ng/2rYQK
Ссылка на статью по докладу: habr.com/ru/co...

Пікірлер: 42
@leshen_deaf
@leshen_deaf 4 ай бұрын
Отличный доклад! Тоже столкнулся с описанными проблемами монолита и пришел к тому же решению, что и вы. Больше всего понравилась структура доклада и целостность повествования. Ну, и спикер, конечно, тоже супер, этого не отнять)
@nickname20151
@nickname20151 2 жыл бұрын
блин ну почему я этот доклад не увидел два года назад( прям все мои вопросы закрыло. спасибо большое.
@jmatveeva
@jmatveeva 2 жыл бұрын
Рада, что было полезно!
@ruslanm.1120
@ruslanm.1120 3 ай бұрын
​@@jmatveeva подскажите названия книжек не получилось расслышать? Классный доклад, в прошлом проекте делали что-то похожее, но тогда я не знал как это называется :)
@jmatveeva
@jmatveeva 3 ай бұрын
@@ruslanm.1120 По-моему, я там упоминала книгу Vaughn Vernon "Implementing Domain Driven Design". Сейчас бы я ещё рекомендовала книгу Vlad Khononov "Learning Domain-Driven Design", must read. Есть на русском вроде бы обе, но лучше в оригинале, конечно
@evgedoo
@evgedoo 3 жыл бұрын
Отличный доклад, много полезного почерпнул для себя.
@MrTheKritik
@MrTheKritik 3 жыл бұрын
Посмотрел много докладов про ddd и ca. Этот лучший для php
@jmatveeva
@jmatveeva 3 жыл бұрын
Спасибо за обратную связь!
@SkyengITeam
@SkyengITeam 4 жыл бұрын
Молодцы, что запустили движ у себя в городе!
@iSpringTech
@iSpringTech 4 жыл бұрын
Спасибо! Ждём на следующих митапах докладчиков от вас ;)
@АнтонГубарев-в3б
@АнтонГубарев-в3б 4 жыл бұрын
@@iSpringTech Реализовали у себя такой же монолит. Плюс минус похоже. С удовольствием поделился бы опытом)
@iSpringTech
@iSpringTech 4 жыл бұрын
Круто! Если готов выступить с докладом, напиши на ilya@ispring.ru
@SkyengITeam
@SkyengITeam 4 жыл бұрын
@@iSpringTech ок, пришлем докладчика от Skyeng, как будет готов)))
@SergeyPredvoditelev
@SergeyPredvoditelev 4 жыл бұрын
@@iSpringTech Случился доклад?
@goriaev
@goriaev 4 ай бұрын
Вопрос с участием отвечающего парня - там паттерн аутбокс по сути обсуждали. А следующий парень хороший вопрос задал (~54 минута), только его не поняли, мне кажется, ответили "попробуйте, у нас не так". В его вопросе становится несколько единиц развертывания и он предлагает микросервисы
@andylitunenko7938
@andylitunenko7938 2 жыл бұрын
Первый раз смотрел, не зная основных идей Чистой архитектуры. Почитал, курсы проходил. Ещё раз посмотрел ваш доклад. Ну просто бомба, особенно идея с deptrack! Вопросы) 1. А какой у вас фреймворк? И нормально ли он подружился с вашей структурой папок?) 2. Не увидел у вас явного упоминания про UseCase. Они у вас включены в API модулей?
@jmatveeva
@jmatveeva 2 жыл бұрын
Добрый день, спасибо за отзыв! Про фреймворк не буду публично писать из-за NDA. Скажу только, что из коробки там другая структура папок, но все получилось настроить, как нам надо. UseCase - это уровень приложения, у нас они реализованы либо в виде сервисов на этом уровне, либо в виде комманд на этом уровне.
@vladgromov9213
@vladgromov9213 Жыл бұрын
Да symfony у них судя по всему. UseCases это domain services и application services
@DimaTiunov
@DimaTiunov 8 ай бұрын
​@@jmatveeva yii или свой бандл Symfony
@goriaev
@goriaev 4 ай бұрын
В докладе ж вроде говорилось про то, что они не могут с ранней версии симфони слезть
@EgorUshakov
@EgorUshakov 3 жыл бұрын
Восхитительный доклад! Но не понял одну вещь. Как я понимаю, для того чтобы у Order’а был Customer надо иметь что-то типа App\Module\Ordering\Order::$customerId с типом CustomerId. Но тогда получается, что модуль Ordering всё-таки знает кое-что о модуле Customer, ведь CutomerId должен располагаться примерно вот здесь App\Module\Customer\Domain\CustomerId. Или же все aggregate root id уходят в неймспейс App\Common\Domain?
@iSpringTech
@iSpringTech 3 жыл бұрын
В рамках других модулей мы работаем не с типом App\Customer\Domain\CustomerID. Обычно мы используем для хранения ID из другого модуля просто string\uuid. Если для сущности Customer нужно отображение в модуле Order, то там появляется "своя" модель, например App\Order\Domain\Customer, с ней же может приехать строгий тип для ID. В папку Common не уходят доменные типы, потому что подразумевается, что любой модуль может уехать в микросервис (а их мы пишем на go), и любые зависимости в домене от Common приведут к сложностям выноса модуля. Плюс на уровне монолита у нас прописано правило, что модуль может использовать интерфейсы\классы другого модуля только на уровне Infrastructure (вот по такому правилу в depfile - .\/src\/.*\/Infrastructure\/Adapter\/.*).
@igor8219
@igor8219 2 жыл бұрын
Спасибо за отличный доклад! :) Вопрос про взаимодействие модулей с помощью ACL. ApiInterface - это межпросцессное взаимодействие(rest, async) или внутри того же потока? Если межпроцессное, то как управляете транзакциями? Если внутри - то нет ли каплинга между модулями?
@jmatveeva
@jmatveeva 2 жыл бұрын
Спасибо за высокую оценку :) ApiInterface - это php интерфейс, другие модули взаимодействуют с ним, вызывая его методы в php коде (в классах антикоррупционного слоя), т.е. внутри одного потока. И да, это явный каплинг, но избавляться от него не везде есть смысл и не везде получится. А так как межмодульное взаимодействие в нашем случае имеет четкие границы (не размазано по всему коду), то контролировать его проще. Транзакции, кстати, у нас используются только внутри одного и того же модуля. Между модулями итоговая согласованность. У нас в блоге iSpring на хабре есть статья по мотивам доклада, может, пригодится, ссылка будет ниже
@iSpringTech
@iSpringTech 2 жыл бұрын
Держите ссылку :) habr.com/ru/company/ispring/blog/560074/
@андрейандреевич-о9н
@андрейандреевич-о9н 4 жыл бұрын
хороший доклад для php проектов по организации модульности (фасадам) , а теперь представьте , что если между модулями взаимодействие сетевое , и не важно на чем они написаны , если вы растущая компания то вы непременно придете к микро-сервисам а точнее к сервисно-ориентированному программированию, так что я считаю что маленьким компаниям из 1,5 человека нет смысла вообще смотреть в сторону сервисно-ориентированному программированию , а уж тем более сравнивать , если вы так и не поняли в чем профит , все просто вы еще не выросли ) P.S если есть проблемы производительности то с огромной вероятностью php(not framework) не причем или это не сложно устранить в рамках php(not framework) , а вот нехватка функционала да тут уж ничего не поделаешь , но это очень узкий узкейс и в 99% случаях тоже решается
@jmatveeva
@jmatveeva 4 жыл бұрын
Спасибо за комментарий :) Все верно, на момент перехода к модульному монолиту мы ещё не так выросли, чтобы это было критично, ну и инфраструктура была не готова к микросервисам. Сейчас мы постепенно движемся в их сторону.
@microb3726
@microb3726 Жыл бұрын
Информация безусловно очень интересная и познавательная. Но зачем фокусировать видео на ораторе вместо того чтобы показать что там на доске? Оператор муж ее?😊
@moravsky5115
@moravsky5115 2 жыл бұрын
*Exellent job!*
@lytican
@lytican 3 жыл бұрын
Ничего личного, спасибо за лекцию, но всегда раздражает, когда презентовать отправляют женщину которая просто зазубривает, ничего не понимая в теме. Да, женщины лучше зазубривают. Да, время разработчиков дороже. Но это неуважение к зрителям.
@iSpringTech
@iSpringTech 3 жыл бұрын
Спасибо за отзыв! Юлия является архитектором в нашей компании и лично принимала участие в проектировании всего, про что говорится в докладе.
@jmatveeva
@jmatveeva 3 жыл бұрын
Да, устная речь не мой конек, признаю :) Не выступала публично со времён защиты диплома. Да и не всем мужчинам это даётся легко, не правда ли?
@twentxx
@twentxx 2 жыл бұрын
@@jmatveeva Вы умница 🙂
@jmatveeva
@jmatveeva 2 жыл бұрын
@@twentxx Благодарю :)
@silentage6310
@silentage6310 2 жыл бұрын
@@jmatveeva Всё у вас хорошо, выступайте еще, было интересно.
小天使和小丑太会演了!#小丑#天使#家庭#搞笑
00:25
家庭搞笑日记
Рет қаралды 55 МЛН
ДЕНЬ УЧИТЕЛЯ В ШКОЛЕ
01:00
SIDELNIKOVVV
Рет қаралды 3,8 МЛН
Зу-зу Күлпаш 2. Бригадир.
43:03
ASTANATV Movie
Рет қаралды 631 М.
Денис Цветцих - Модульный монолит вместо микросервисов: Как, когда и зачем
1:00:37
DotNext — конференция для .NET‑разработчиков
Рет қаралды 6 М.
Артём Антоненко «Domain Driven Design» | CODEiD (11.08.2018)
1:12:50
JIT в PHP 8: Просто о сложном
19:26
Andrey Lozunov - Fullstack Web Developer
Рет қаралды 14 М.
PHP: Неправильный путь
1:37:28
Кирилл Несмеянов
Рет қаралды 9 М.
Космические гипотезы: Как возникло все?
3:51:04
Космическое путешествие
Рет қаралды 696 М.
Архитектура PHP-приложения: интерьер
37:58
小天使和小丑太会演了!#小丑#天使#家庭#搞笑
00:25
家庭搞笑日记
Рет қаралды 55 МЛН