
Anton
13.09.2017
12:24:23
всех с праздником!

Artem
13.09.2017
13:05:12
может тут есть кто активно юзает cqrs + es?
пилил скорее crs (без query) + es. проект на 4 месяца в соло. прокладка для небольшого биллинга - там было удобно. по цене не дорого, но не было версионирования команд и боли с bc.
даже можно сказать удобно
если покапитанить, то проекты с большим горизонтом будут дорого стоить из-за суппорта старых команд/квери. имхо не для PHP эта тема, а больше для махрового энтерпрайза

Google

Artem
13.09.2017
13:09:18
а, сорри, тут про ООП чат :)


Aleh
13.09.2017
13:30:32
И снова ходил в отпуск, и опять вернулся из него, с небольшим сообщением про парадигмы программирования.
Если попытаться ответить на вопрос, какую из парадигм или идей (прочитанных, услышанных, изученных) я нахожу максимально полезной - не в теории, а на практике, то я ответил бы неожиданно.
Это будет не ООП, не ФП, и не другие П, ДДД и ТДД. Это будет контрактно-ориентированное программирование.
Положительный эффект от него заметен настолько явно, что в своей работе мы закрепили это даже в соглашениях о кодировании:
- все без исключения публичные функции и методы имеют неотключаемые в релизе проверки входных аргументов и выходных результатов
- все остальные функции и методы могут иметь отключаемые или неотключаемые в релизе проверки входных аргументов и возвращаемых значений
- любой код может иметь отключаемые в релизе проверки в середине логики.
Судя по количеству дефектов в джире, это реально работает, без регистрации и СМС. Часто отпадает даже необходимость в тестах и отладчике.
контрактно-ориентированное программирование - костыль для тех, у кого нет нормальной системы типов?


Alexandr
13.09.2017
13:33:14
контракты немножко о большем, нежели просто о типах, так-то

Aleh
13.09.2017
13:36:56
ну это вопрос насколько хорошо ваша система типов позволяет описывать тройки хоара?

Sergey
13.09.2017
13:38:19
я не знаю кто такой этот "архитектор говорит" но формулировка заставляет меня усомниться в том что именно подразумевает автор
как минимум смущает что DbC он называет "парадигмой" и зачем-то туда добавляет всякие там ddd и tdd
например всякие Мэты Прайсы будут говорить что "наиболее эффективна комбинация из ATDD + TDD"
а Кент Бэк будет биться с Мэйерсом за tdd vs dbc просто потому что люди то разные и подходы они под себя делали с их мироощущениями и т.д.
https://www.youtube.com/watch?v=KtHQGs3zFAM
вот например еще один спор на тему tdd vs dbc
как по мне когда кто-то говорит "мы пробовали юзать X и это работает" то, если конечно к этому высказыванию не добавлена исчерпывающая информация о контексте (какие проекты, какая команда, что еще пробовали, насколько плотно) то смысла в этом высказывании нет

Mykola
13.09.2017
14:16:10
всем привет!

Google

Mykola
13.09.2017
14:16:56
как оно? есть что нового интересного?
@fes0r , когда в Киев?

Sergey
13.09.2017
14:19:03
давно тебя не было)

Mykola
13.09.2017
14:19:34
я был
я почитываю)

Sergey
13.09.2017
14:22:05

Sergey
13.09.2017
14:22:45
так приезжай чо) только пока ивентов не намечается, разве что php friends небольшой митапчик

Sergey
13.09.2017
14:23:45
для каких проектов ок, для каких не стоит, может есть какие-то мысли

Anton
13.09.2017
14:28:37
CQRS хорошо всегда. На стоимость разработки влияет слабо, а плюсов много.
ES только если с DDD вкомплекте. Соответственно дорого и далеко не всегда нужно.
Все личное имхо.

Sergey
13.09.2017
14:28:58
и понятно что для бложика в этом нет смысла

Anton
13.09.2017
14:29:16
Дорого это про DDD

Sergey
13.09.2017
14:29:18
и понятно что большинство приложений по сложности не далеко от бложиков ушли
может быть DDD нужно тогда когда "дорого"?)
то есть вопрос масштабов

Anton
13.09.2017
14:29:55
Вот да, скорее даже так
Проработать домен задача не тривиальная. Очень часто бизнес сам не понимает свои процессы, соответственно их разбор и нормализация требуют времени и денег.

Sergey
13.09.2017
14:32:04
ну это понятно, и есть всякие ивент сторминги и прочие штуки

Google

Sergey
13.09.2017
14:32:28
с другой стороны - ES дает тебе такую предсказуемость разработки которую не дает никакой другой подход
ну то есть тебе надо что-то добавить - делаешь проекцию данных и вуаля
проще исследовать домен
и на определенных масштабах это становится финансово выгодно
вопрос в том что я плохо понимаю пограничную зону. когда начинается выгода, и когда нет

Anton
13.09.2017
14:33:35
Серег, ты знаешь, я сам за CQRS + ES обеими руками, но для этого нужен соответствующий проект коих к сожалению не много

Mykola
13.09.2017
14:34:12
кароч... с cqrs оно как получается... так же как и с ддд
так же как и с блокчейном)

Anton
13.09.2017
14:34:21
неа

Mykola
13.09.2017
14:34:27
типа можно пользовать
но можно и не пользовать

Anton
13.09.2017
14:34:33
CQRS ок и реально круто

Mykola
13.09.2017
14:34:43
канеш круто!

Sergey
13.09.2017
14:34:45

Mykola
13.09.2017
14:34:46
как и ддд

Anton
13.09.2017
14:34:57
А вот ES (ну и DDD) далеко не всегда

Mykola
13.09.2017
14:35:02
да понятно, что с ES

Sergey
13.09.2017
14:35:05

Mykola
13.09.2017
14:35:09
в разрыве не круто)
да все весело

Google

Mykola
13.09.2017
14:35:21
хорошие штуки
но вот нужны ли они?
хз хз
я все больше сталкиваюсь с другими вопросами

Sergey
13.09.2017
14:35:54
А вот ES (ну и DDD) далеко не всегда
а как без ES делать CQRS? как у тебя тогда read model выглядит? или ты о том варианте где у тебя write model генерит ивенты но мы тупо храним стэйт и есть read model которую можно склепать из ивентов?

Anton
13.09.2017
14:36:13
Ага

Mykola
13.09.2017
14:36:13
типа что выгоднее: костыль прямо сейчас, или идеальное решение потом никогда? :)

Anton
13.09.2017
14:36:58
Была мысля (помойму от Udi Dahan) что CQRS нужен тогда когда большая часть агрегатов - Saga.

Sergey
13.09.2017
14:37:06

Mykola
13.09.2017
14:37:40
я даже дальше пошел

Dmitriy
13.09.2017
14:37:53
лучше говно сделать сейчас чем потом

Mykola
13.09.2017
14:37:55
я теперь думаю, что и костыль не нужен)

Anton
13.09.2017
14:38:14
Код шредингера!

Sergey
13.09.2017
14:38:25

Mykola
13.09.2017
14:38:49
причина костыля в том, что ты что-то сделал слишком круто когда-то давно, и теперь оно не влезает в требования заказчика
которые не столь круты
:)
живой пример: делаем сесурити у проекта, чтоб ни одна вош не пролезла

Sergey
13.09.2017
14:39:29

Google

Mykola
13.09.2017
14:39:34
полгода делаем
потом приходит клиент и говорит: а вот тут мне пожалуйста дырочку запилите, чтоб я мог напрямую запросы слать

Sergey
13.09.2017
14:40:31
как же так ты не подумал про бэкдоры?

Mykola
13.09.2017
14:40:34
и ты такой смотришь, а твоя система сесурити настолько хороша, что дырочку ну никак не запилить
приходится лепить костыль
перехватывать сесурити

Sergey
13.09.2017
14:41:18
ну я слабо понимаю о чем ты...

Mykola
13.09.2017
14:41:36
ты не знаешь что такое сесурити? ?
security по нашему

Sergey
13.09.2017
14:41:50
я знаю что такое сесурити, я плохо понимаю в контексте апворка как оно там внутри
и что вы делали
и зачем вам дырочка

Mykola
13.09.2017
14:42:05
я не имею ввиду апворк
в апворке все гораздо сложнее

Sergey
13.09.2017
14:42:27
ну ок, а зачем дырочка то?

Mykola
13.09.2017
14:42:29
даже влазить в подробности не хочу
ну как... бывает, что у клиента есть партнер, который делает какие-то нестандартные запросы там
и он не умеет в ориджины и другие хедеры
(потому шо легаси у него на колдфюжине написано, например)

Sergey
13.09.2017
14:43:51
сделать адаптер?)