Kukuruzovich

25 января 2016, Worldwide

# Понедельник 57 твитов

всем привет, эту неделю ведет @Kukuruzovich , стыдно признаться, что php программист, но у каждого свои недостатки. pic.twitter.com/EyflTPEZLk

20:14

тут 2000 фолловеров, можем поговорить о #DDD #SOA #EDA #DDDD а еще интересно если тут появятся специалисты по distributed системам.

20:15

итак, кто тут в проектах использует DDD? только такой тру DDD со всяким Strategic, а не пара паттернов из Tactical?

20:19

кто что думает по поводу хайпа насчет микросервисов? я вот думаю, что отсутствие нужного софта в языках и лень породило микросервисы =)

20:20

кстати книга Ньюмана про микросервисы ни что иное как DDDD расписанная для тех кто ниасилил DDD, норм набрасываю да? =)

20:22

кстати если тут уж есть те кто используют DDD, может вы еще для Domain Model persistence используете Event Sourcing? как живется?

20:49

кстати про SOA, еще один пример софта, у явистов есть Hystrix, в php хоть Phystrix есть спасибо #Odesk

20:51

кстати, многие ли любят fail fast? я просто ленивый и если что идет не по контрактам то кидаю exception и ухожу, кто делает также?

20:53

если тут есть игроделы всякие сишарперы, вот вам отличная вещь про которую вы конечно знаете наверное github.com/dotnet/orleans

20:56
@backendsecret я за referential transparency везде где можно
21:00

многие кстати все никак не могут принять способ deduplication events и идемпотентной обработки и начинают костылять какие костыли видели вы?

21:12

сейчас накидаю сюда ссылок для CQRS / ES php если вдруг кто-то решит рискнуть, явисты могут кстати поревьюить, мало ли =)

21:14

вот кстати github.com/odesk/phystrix если кому надо, чтобы fault tolerance был толерантным

21:16

@backendsecret там еще дашборд есть который цеплятеся к hystrix дашборду =)

21:17

для php программистов они тут хоть есть?
github.com/qandidate-labs… github.com/szjani/predaddy github.com/SmartGecko/Gov… github.com/beberlei/litec…

21:19

судя по всему многие либо спят либо забили на DDD, а я хотел явистов помучать или всяких шарперов с их софтом =)

21:26
@backendsecret я с ddd поигрался, в итоге не согласен с подходом в принципе. для анализа и дизайна нужны разные артефакты.
21:32

так вот костыли с ивентами:

  • персистить вместе с entity
  • мониторить лог базы или другой лог

как по мне проще забить и принять реальность

21:34
@strangeqargo когда что-то делают, чтобы утереть нос или "исправить", выходит хуйня типа EntityFramework @backendsecret
21:35
@backendsecret в итоге микросервисы, функциональная декомпозиция + некоторые идеи из FDDD
21:38

кстати я вот думаю что BDD user story которые по факту не что иное как UL из DDD, записанные на том же gherkin это тру, но лень )

21:40
@backendsecret .. Теперь - бинго - 7ая версия переписывается с нуля, будет как в relinq, но своё, другое @strangeqargo
21:47

раньше когда-то я коммитил на #github и регулярно устраивал срачи в #Yii repo, может кто-то меня вспомнит, хотя лучше не надо конечно

21:51
@backendsecret я психанул между 4ой и 5ой версией и ушёл в java, и не пожалел ни разу с тех пор @strangeqargo

вот сразу видно человек образумился, стоит возрадоваться за него, ведь #java это светлое доброе вечное =) twitter.com/meowthsli/stat…

21:53

кстати видел что многие начинают виснуть когда AR может персистится отдельно от каких-то VO связанных с ним, у людей рвет шаблоны #DDD

21:54

в последнее время все больше принимаю сторону использования UUID для identity, т к сразу always valid и все дела, и хороший PI получаем =)

21:55
@backendsecret оракл, к счастью или сожалению, стоит своих денег. Самая быстрая и предсказуемая БД @strangeqargo
21:58
@backendsecret мля, это те кто пилит третьи норамальные формы для nosql?
22:03

можно еще поговорить про #EDA, например у нас #EDA везде где только можно с колоссальным message rate 150 m/s, есть даже #CEP ;D

22:06

оставлю тут трек что-ли, а то все текст и текст ) youtube.com/watch?v=2PCdGw…

22:08

не знаю как люди живут в Москве или Питере, серые города, злые люди, вечно все куда-то спешат и никакого воздуха чистого, кто что думает?

22:11

кстати те 3 - 4 человека, которые подписались на мой акк, он не "технический" полистайте чуть подальше, чтобы знать на что подписались ;D

22:17
@Soukhinov ты говорить правда человек я согласиться с ты@ivanenok @backendsecret
22:17

на сегодня наверное все, т к у меня тут 1:30 и море под боком, надеюсь хоть кто-то завтра появится из явистов, дотнетеров про SOA EDA DDD )

22:22

ой, кстати чуть не забыл, есть ведь #AOP , явисты то точно про него знают, если в php кому надо то это к @lisachenko github.com/goaop/framework

22:24
Creating a native #ios, #android and #wpmobile app using #php - that's an interesting challenge! twitter.com/amahomet/statu…

для любителей извращений на php twitter.com/GabiUdrescu/st…

22:30
@backendsecret А разве в Питере злые? Мне всегда друзья говорили, что в Питере намного добрее, нежели в Москве
22:35
@backendsecret ну хз, в Москве хорошие люди, красиво, воздух чище, чем в Омске, парков и прочих общественных мест больше
22:35
@backendsecret @kotchuprik из Омска невозможно сбежать, в моём сердце он навеки!
22:37

кстати раз уж тут фронтэндеры затесались в рядах backend , то скажу что у нас #DDD даже на frontend есть , серьезно , ResortFactory.js и т п

22:37

в качестве чтива могу посоветовать аккаунты @microservicely и @adriancolyer которые делают подборки , других наверное вы и так знаете

22:39

ну или вот еще @caitie @seancribbs @rystsov @DZone остальных сами найдете по кросс ссылкам , всяких афиров и прочих =)

22:43

кстати если кто не знал то по #distributed можно @sum3rman доставать аккуратно, очень вежливый и симпатичный кун ^_^

22:44

конечно кто не знал @gvsmirnov @spyced @gregyoung то они тоже очень умные вещи пишут там у себя, про фаулеров, эвансов и прочих не говорю

22:46

ну и последний аккаунт для тех у кого все должно быть бигдато и хайлодисто ) @highscal

22:47

если кто-то упоролся по machine learning и прочему, хотя я только сеть Хопфилда делал , то вам в помощь @rasbt с его книгами

22:49

ну и поскольку тут много гоферов , хотя я конечно их люто ненавижу , just cause , то вам в помощь @TvorZasp он сейчас в Питере вроде )

22:52

старый дедан, которого я конечно не знаю и зафолловил из-за его авы такой дружелюбной @ted_dunning , кто узнает кто он напишите мне )

22:59
@backendsecret @ted_dunning srsly? да это же сам старина Тед! oreilly.com/pub/au/5873 mapr.com/blog/author/te…
23:05

кому интересно потом дам ссылку на трансгендера который к тому же еще и феминист а еще устроил срач на #github кого только не встретишь ;D

23:07
старый дедан?!?
Hardly!
@grim_juz @backendsecret
23:08
@backendsecret у нее 2 показательных срача:
23:13
@backendsecret сейчас рельса очень не плохо развивается + появляются другие интересные фреймворки (hanamirb.org)
23:14
Just joined @tumblr from space! #Blizzard2016 inspired 1st post: Chasing Storms tmblr.co/ZmuJBi20aFgEL #YearInSpace pic.twitter.com/kPEAfs07IW

напоследок вот вам статус какого-то астронавта который сейчас вроде болтается на МКС twitter.com/StationCDRKell…

23:20

# Вторник 278 твитов

я вернулся, добрался до работы, нынче в Сиэтле снежно очень ;D pic.twitter.com/n1fUIMqOFp

7:37

тут 33 mentions, а вроде все спали

7:37
@__pewpew__ просто надо покупать платную поддержку или партнёриться. А баги есть у всех @backendsecret @strangeqargo
7:41
@backendsecret сервер+поддержка И ЕСТЬ ПРОДУКТ, а не то, что вы там себе вообразили под продуктом @__pewpew__ @strangeqargo
7:45

так ни у кого и не появилось каких-то вопросов по #DDD #EDA #DDDD ? интересные темы ведь или мне прост пересказывать так по 140 символов? =)

7:47

кто как работает? я вот сижу в наушниках и слушаю на полную громкость музыку чтобы не отвлекал всякий шум? многие любят тишину и почему?

7:52

показательно как упали акции #Twitter, вроде год назад все было хорошо а сейчас по 17 долларов

7:55
@backendsecret в тишине легче сосредоточиться.... Особенно если пытаешься понять почему алгоритм работает не так как планировалось
7:56
@backendsecret В Питере атмосфера творческая.
7:58

кто-то уже конечно использует, но если кто не знал и любит спокойную музыку, вот вам плацкарты от РЖД ) noisli.com

8:00
@backendsecret епрст! ты в паблик подался ? Смотрю ава твоя а речь то нет! Ни тебе прона, ни про Путина!
8:00
@backendsecret сечас Flow хочет профилироваться по #DDD я слышал. Интересная дискуссия: discuss.neos.io/t/product-visi…
8:02

в целом многие разработчики, которые не хотят стоять на месте и работают над сложными проектами, приходят к #DDD так или иначе

8:04

сейчас вот слушаю альбом #Tron music.yandex.ru/album/219772 #DaftPunk

8:06
@dimaip @backendsecret DDD-framework - это утопия. уж очень приложение от первого D зависит :) разве-что базовые шаблоны tactic'a
8:08
@anton_davydov читал в таком порядке:
infoq.com/minibooks/doma…
amazon.com/Applying-Domai…
amazon.com/NET-Domain-Dri…
amazon.com/Implementing-D…

для тех кто хочет все таки начать разбираться с #DDD вот вам книги, вчера отвечал на этот вопрос ) twitter.com/backendsecret/…

8:11

одна из главных вещей в #DDD еще это не забывать про Strategic, т к без нормального разделения Domain по BC особо далеко не уплывешь

8:12

а еще я иногда люблю залипать под 10 часовые версии на работе например youtube.com/watch?v=sJOD7B… youtube.com/watch?v=ov5pxa…

8:15

пинк флаффу юникорнс дэнсинг он рэйнбоус ;D

8:17
@Onotoly они тут так дискутируют, что только вакуум способен заглушить их :( @backendsecret

мы то с вами знаем по всяким сериалам про космос и #StarWars что звук то там есть, зачастую Dolby Digital =) twitter.com/dcromster/stat…

8:22
@dcromster @backendsecret тишина не всегда достижима, особенно в офисах.в таких случаях музыка намного лучше, чем внезапная дискуссия коллег
8:22

опять же про #DDD, единственный творческий момент тут это только на Strategic, когда дело подходит к Tactical то там все правила расписаны )

8:27
For those who likes #ddd, #php and some discussion there is dddinphp.org /cc @backendsecret
8:29

люди, которые используют регулярки для парсинга, изучите уже #XPath, сделайте lvl up

8:31
В @backendsecret говорят про какой-то DDD и DDDD. Что это вообще за хуйня?
8:31
@freiksenet_ru @backendsecret не обращай внимания, бро, продолжай натягивать темы на #WP :D
8:35

самая наверное крутая вещь в #DDD то что он действительно с помощью UL позволяет сблизить бизнесс и разработчиков, устранить недопонимание

8:37
@backendsecret в наушниках слушаю на somafm DEFCON radio somafm.com/defcon/

как-будто в 90е вернулся ) twitter.com/chubik/status/…

8:38

наверное стоит сделать краткий экскурс что-ли про #DDD, все просто - делится на две части Strategic / Tactical, обе важны конечно

8:39

так вот весь "моделлинг" по факту и находится в Strategic части, в которую входят: UL, BC, Domain parts, Context Maps, BC communication type

8:46

в Tactical входят всем известные паттерны: Factory, Repository, Service, Entity, Value Object, Event. Эта часть тупо кодинг и все )

8:50

например что такое Domain? вроде понятно предметная область? а более конкретно мало кто понимает что с ней делать, с чего начать?

8:51

обычно domain еще называют problem space - совокупность всех вопросов / проблем которые надо решить чтобы сделать продукт

8:53

проще наверное на примере рассмотреть, поэтому за пример возьмем какой-нибудь классический ecommerce магазин, который все писали но не я

8:54
@backendsecret можно выкинуть Tactical (кодить как попало), из Strategic взять только деление на ВС, оформить BC сервисами и будет #SOA :)
8:56

domain (problem space) магазина:

8:57
domain (problem space) магазина:

вот в кратце что есть domain (problem space) для noname online магазина =) twitter.com/backendsecret/…

9:02

в #DDD как и в любой другой вещи нужно помнить что программист ничего не придумывает, а лишь автоматизирует бизнес, многие забывают про это

9:03
@backendsecret а когда появляется потребность в масштабировании что со всем этим хозяйством делать?

оно легко разбивается на много сервисов и масштабировать можете сколько угодно, и как угодно twitter.com/blideddd/statu…

9:05
@backendsecret Предпочитаю тишину. Если её нет, использую noiz.io. Музыка очень отвлекает.
9:07

также важно помнить что Domain всегда разделим, есть более важные "вопросы" (части домена) есть наименее приоритетные, разделяй @ властвуй

9:09

в #DDD если говорить про разделение Domain:

9:14

core subdomain - это та часть которая является наиболее критичной для бизнеса, без которой по факту его не будет

9:19

@backendsecret очевидно что для интернет магазина core это та часть что отвечает за продажи, впрочем как и для многих других продажников )

9:20

@backendsecret этой частью должны заниматься только те кто уже имеет большой опыт в DDD т к промахнуться тут означает сфейлить проект часто

9:21
@backendsecret а в php часто используют DDD? Мне казалось, DDD для больших сложных доменных моделей. Где тут php?
9:25

supporting subdomain - та часть в которой есть бизнес проблемы, но он не критичны для бизнеса в целом, не являются его ключевой частью

9:26

@backendsecret для интернет магазина это те domain part которые связаны с вопросами 1,4,5,6,7.

9:28

@backendsecret данными domain part могут занятся те кто более-менее понимает что такое DDD

9:29

@backendsecret можно даже часть заутсорсить но будут проблемы с налаживанием коммуникаций и пониманием бизнеса т к аутсорс это такоэ )

9:29

general subdomain - та чать в которой нет бизнеса, и она просто нужна для неосновных функций проекта, эту часть можно купить или аутсорснуть

9:36

@backendsecret например аутсорснуть можно ту часть что отвечает за customers и их регистрацию либо та часть что часто реализуется в виде CRM

9:37

@backendsecret данной domain part могут заниматься практически все программисты не важно насколько они DDD pro )

9:37

cohesive mechanism - странная фигня которая иногда есть в домене, но она не представляет какой-то бизнес, часто это некие алгоритмы просто

9:38

@backendsecret под алгоритмами подразумеваю разные выборки / срезы / etc, для многих это будет знакомо как Analytics / Reporting / Statistic

9:39

@backendsecret если кто-то работает в банковской сфере, то в зависимости от того как повернуть домен это может быть и supproting и даже core

9:39

разобрались что такое Domain, что он разделим и как, что есть более важные части и менее, осталось выяснить когад кодить уже можно будет?

9:41
cohesive mechanism - странная фигня которая иногда есть в домене, но она не представляет какой-то бизнес, часто это некие алгоритмы просто

@backendsecret
twitter.com/backendsecret/…
twitter.com/backendsecret/…
twitter.com/backendsecret/…
twitter.com/backendsecret/…

9:41

там кто-то хоть слушает или у меня монолог перед 2k мертвых душ? ;D

9:42

Billy Talent — Devil On My Shoulder #nowplaying music.yandex.ru/album/2291897/…

9:43

собственно следующая часть DDD Strategic это UL (ubiquitous language) ну или common language, язык на котором разговаривает бизнес и dev

9:58

@backendsecret это просто набор определенных слов / терминов, которые являются общими для бизнеса и дев, это не UML (!) ни диаграммы

9:59

@backendsecret те кто знают BDD user story прекрасно понимают о чем я говорю, важно чтобы это был не язык бизнеса и не язык dev общий

10:00

@backendsecret в качестве участников тут это domain experts со стороны бизнеса и разработчики со стороны dev

10:05

@backendsecret когда-то давно я капитанил по поводу DDD в том числе если кому интересно вот gist, кикну его потом gist.github.com/Ragazzo/830cc1…

10:07

кстати как один из примеров того что не стоит слушать бизнес постоянно вот: надо было сделать функциональность отвечающую за партнеров и т п

10:08

@backendsecret с первого захода domain experts сказали что есть франчайзинговые офисы и обычные партнерские, вроде все просто

10:08

@backendsecret и можно было бы сделать 2 класса FranchisingOffice / PartnerOffice, но оказалось что тип офиса определятеся не просто так

10:09

@backendsecret а конкретным контрактом который заключается, таким образом если бесприкословно верить бизнесу то можно получить misalignment

10:09

кому сложно крафтить UL можно применять простой способ - выделять сущности и глаголы которые на уровне Tactical уйдут в Entity / Services

10:10

@backendsecret самое главное внимательно слушать и задавать вопросы, а не просто принимать все на веру =)

10:11

вообще BDD конечно крутая вещь, и очень нужная для DDD, т к я считаю что DDD + BDD это самое то лекарство, почти silver bullet )

10:12

@backendsecret но использовать BDD без DDD особо смысла не вижу, т к терятется общая картина того что нужно сделать

10:13

пока что перерыв на обед, потом расскажу что такое Bounded Context, Context Maps и как-то связано с предыдущими темами - Domain, UL =)

10:20
DDD: Don’t Create Aggregate Roots

udidahan.com/2009/06/29/don…

10:23
#Twitter's downtime last week caused a market value loss of 700 million dollar dzone.com/articles/somet… via @DZone
10:28

The Beach Boys — California Dreamin' #nowplaying music.yandex.ru/album/30903/tr…

11:55
@backendsecret а что #DDD закончилось ? А TDD как тесно связано с #DDD ?

niet, просто надо поработать ведь тоже ) думаю прервусь до 18:00 twitter.com/RusAlexander/s…

12:03

после 18:00 обсудим оставшуюся часть #DDD Strategic на примере интернет магазина, будут рисунки наверное если я не поленюсь )

12:11
For differentiate your company in market, is just need of apply this magic technique that always work and is use by all competitor!
12:45

тут спрашивали про то как связаны TDD, BDD, DDD если вкратце то формула какая-то такая DDD(BDD(TDD(unit-tests))), притом что TDD громаден

12:47
@de_gis @backendsecret нельзя ли тут упомянуть что #DDD и рефакторинг неразделимы. А рефакторинг без #TDD - боль а то и утопия
12:47
@RusAlexander @backendsecret а тестирование - это не исключительно ТДД,могут быть варианты

конечно, тестирование user story через тот же cucumber / behat - проверка бизнес спек тоже тестирование twitter.com/de_gis/status/…

12:49
Is good example of Ubiquitous Language of biology pic.twitter.com/TXYfAhxZCx
12:49
.@DDD_Borat Is example of why we need bounded context.
12:49
@backendsecret I've just asked @mpraglowski for help and he's cooking a nice blogpost about this problem - today/tomorrow
13:02

коверкай слова @ кровь из ушей вызывай, вообще раньше не любил слово entity ибо entitty и т п ;D //cc @davert 5minphp.ru/episode11

13:08

кстати для php программистов есть еще@5minphp там успели засветится разные люди из ru community =)

13:10
@backendsecret в тему #DDD порекомендую специальный выпуск подкаста "Пятиминутка PHP" о Domain Driven Design: 5minphp.ru/episode11/
13:15
@backendsecret @5minphp а порекомендуйте малоизвестные (недавно начавшиеся), но интересные ru подкасты такого же формата, касаемые IT-сферы.
13:23

тут кстати никто не играет в #Destiny #NeedForSpeed #GTAVOnline ? можно было бы вместе побегать ^_^

13:39
@unix_tips @backendsecret @5minphp rcmp.me - малоизвестный ru подкаст :) об IT, хотя часто обсуждаем и другие темы :)
14:46
@unix_tips @backendsecret @5minphp #razborpoletov must have для java разработчиков.
14:46

рабочий день заканчивается =)

14:55

вот и новый день прошел, завтра будет день опять

14:55

пока буду идти домой, может кто-то из пуфонистов ответит как они делают DbC без интерфейсов то? или не могут в en.wikipedia.org/wiki/Design_by… ?

15:00
@unix_tips @backendsecret Несколько избранных выпусков. rcmp.me/?p=1672 | rcmp.me/?p=2000 | rcmp.me/?p=654
15:01
@backendsecret для беженцев с джавы у нас всегда есть zope.interface docs.zope.org/zope.interface но в целом: только duck typing, только хардкор!
16:03

если кому было интересно про Domain и domain parts, то вот есть старое summary мое капитанское =) gist.github.com/Ragazzo/27a02a…

16:13
@iamstarkov @backendsecret @freiksenet_ru итак #DDD это превращение бизнес логики в код без лишних деталей.
16:21
@iamstarkov @backendsecret @freiksenet_ru и да #DDD это ЯП-агностик подход.
16:24

по поводу #Java и того что у этих умных дядек весь сфот то готовый (!) если кому надо для #EDA #CEP github.com/pulsarIO/realt…

16:25
Power of "event-driven, non-blocking I/O"? twitter.com/gavinjoyce/sta…
16:28

через пару минут продолжим штурмовать #DDD Strategic на примере самописного псевдо магазина =)

16:31
@RusAlexander @backendsecret @freiksenet_ru в каком языке он появился? есть реализации/туториалы на js?

с учетом того что #BDD на javascript давно есть то где - то и #DDD завалялся наверное , никто не видел? twitter.com/iamstarkov/sta…

16:35

как по мне то если программирование не приносит фана (или очень много денег) то вы делаете что-то не так или не те тулзы. что думаете?

16:36
@RusAlexander @backendsecret @freiksenet_ru это как-то относится к dsl?

тут ребята тоже выясняют что такое #DDD twitter.com/iamstarkov/sta…

16:40

Taylor Dayne — Tell It to My Heart #nowplaying music.yandex.ru/album/65007/tr…

16:42

ok, значит выяснили что такое domain / domain parts, выяснили что такое UL и для чего он нужен, но пока что ничего особо не сходится

16:48

@backendsecret есть вопросы (domain) и есть слова (ul), как найти решение? в DDD Strategic в качестве решения выступает Bounded Context

16:48

@backendsecret если domain / domain parts это problem space, то bounded context это solution space. в принципе название говорит само за себя

16:49

@backendsecret bounded context - смысловая граница в рамках, которой слова из UL имеют только одно четкое определенное значение

16:50

@backendsecret например, у многих в e-commerce в том же магазине есть User где-только можно или Order. Ниже приведу примеры

16:53

@backendsecret допустим есть разные domain parts: profile management, purchasing part, payment part, auth / permissons part

16:54

@backendsecret несмотря на то что это разные части domain, зачастую люди любят везде создавать некоего User, class User во всех domain part

16:55

@backendsecret ведь согласно UL вроде везде есть "пользователь", только дело в том что роль этого пользователя бывает разной, а именно

16:56

@backendsecret в profile management (User, Profile), purchasing (Customer), payment (Payer), auth / permissions part (Role)

16:58

@backendsecret именно благодаря bounded context и тому что мы знаем что в каждом случае значит то или иное слово мы избегаем misalignment

16:59

@backendsecret другой простой пример это Account (profile part) и Account (banking part), в зависимости от того или иного BC смысл меняется

16:59

обычно в проектах много BC как и Domain Parts. Подробнее о Bounded Contexts тоже есть в давнишней капитанской статье gist.github.com/Ragazzo/f373ad…

17:01

один из способов как определить domain parts / bounded contexts - смотрите какие есть отделы / departments у бизнеса и алигните по ним

17:04

@backendsecret главное конечно не перестараться, но в целом иногда бывает норм Marketing BC -> Marketing Dep, Inventory BC -> Stock dep

17:05

вообще одно из buzzword это Domain Model, ключевая вещь в DDD конечно, вот что Фаулер пишет martinfowler.com/eaaCatalog/dom…

17:07

как уже кто-то понял хотя вряд-ли, domain parts / bounded context похожи немного, по факту BC намапленный на domain part и есть Domain Model

17:09

т е есть проблема (domain part) как организовать работу со stock / складом товаров, откуда брать, какие вообще есть виды товаров, атрибуты

17:09

@backendsecret есть bounded context который обычно именуют Inventory, который содержит слова из UL, которые помогают ответить на эти вопросы

17:10

@backendsecret и когда Inventory Bounded Context маппится на эту domain part и получается Domain Model - конкретная реализация

17:11

важно понимать что BC + DP = DM, и что Domain != Domain Model, разные команды могут построить по разному Domain Model на одной domain part

17:12

для тех кто хочет еще почитать про #DDD есть @eulerfx ну и много других конечно

17:13

в целом DDD Strategic не такая простая вещь как Tactical где тупо одни паттерны ;D

17:13

таким образом в мифическом e-commerce магазине есть BC: inventory, purchasing, payment, shipping, account (profile), accounting

17:17

из классических примеров того что забыли про UL, является Order::STATUS_PAID, т к оплачивается Invoice а не Order, много таких моментов есть

17:18

все наверное уснули, или кто-то живой остался?

17:22
@backendsecret я сижу на унитазе, читаю тебя. Продолжай.

признание уже близко twitter.com/stas_spiridono…

17:26

как могли заметить конечно DDD Strategic довольно скучная хрень без особых кодинговых вещей, на то оно и проектирование, но без него никуда

17:27

видел как люди сходу использовали DDD Tactical, у них ничего не получалось т к не знали как правильно разделить domain и говорили что DDD фу

17:28

те кто знают SOA наверное уже догадались что можно раскидать тупо Bounded Contexts per SOA и жить себе спокойно, DDDD все дела

17:30
@backendsecret первый раз набежал и сделал так же:) Теперь хочу разобраться поглубже и вникнуть в strategic.
17:31

собственно про то что я писал в начале - DDDD, ни что иное как тупо BC на SOA, куда уж проще

17:37

но стоит отметить что у нас не все сервисы это BC, есть всякие элементарные / атомарные сервисы - Geo, Mailing, Forecasting

17:37

вот обсудили Domain (domain parts), UL, Bounded Context, остались еще Context Maps и способы взаимодействия между BC

17:41

на Context Maps как раз и рисуют Bounded Context и способы их взаимодействия, рисовать мне немного лень, или есть online тулза удобная?

17:41

стоит отметить что если у вас в компании много DDD pro которые и так понимают как BC взаимодействуют то вам конечно и рисовать не надо

17:42

не стоит возводить рисование всяких Context Maps или UML или чего-то другого в ранг какого - то ритуала, если не надо - то нафиг )

17:42

сейчас поретвитчу тут вам Borat про #DDD смешное )

17:46
@unix_tips @backendsecret из свежих ru подкастов (стартовавших в 2015): @GolangShow и видеовстречи @clojure_ru webmeetups.net/mgroups/25
17:52
@backendsecret все просто:
17:52

Two Ton Boa - Time to Say Goodnight youtu.be/23XqlPb6Iq8 via @YouTube

17:52
@unix_tips @backendsecret @5minphp вот ещё моя подборка заинтересовавших меня подкастов - ru и en. raindrop.io/collection/876… вдруг пригодится
17:54
Junior Dev expect miracle from new frameworks. Senior Dev expect miracle from DDD. Real miracle is when they discover they have own brain.
17:58
You always start new project with DB schema? Perhaps you is interested of this fantastic innovation for play music! pic.twitter.com/YsMlPPt1wP
17:59
OH: We have nice team of coders strong in technologies, but we need DDD Consultant for do the thinking
18:00
Is Example of Behaviorism:
Given conditioning is done
When you hear "Behavior-driven"
Then you call out "Behaviorism is bad! BDD is bad!"
18:03
We don't refactor in my group. If you find that you need to refactor, it means that you didn't do your job during the design phase.
18:03
@DDD_Borat and we should introduce context independent words for higher abstractions, such as set, get, update, create and delete.
18:04
For improve our Ubiquitous Language, from now on we will say "Shopping Cart" instead of "Purchase", and "Purchase" instead of "Order"
18:04
"CQRS without DDD is but the ruin of the soul" - Rabelais on #DDDesign
18:05
@DDD_Borat so i learned a repostiory, identity map, unit of work pattern, is #DDD pro now
18:10
Subtitle of DDD is should be "Tackling the Stupid Need for Complexity in the Heart of Developers"
18:10
I now offer free DDD immersion training: you work alone 6 month on my real client problem for free & I give critic at end (senior dev only)
18:11
DDD is easy: just need of study all @martinfowler, @rebeccawb and @KentBeck book before for well prepare.
18:11
If you believe CQRS + ES is solve all problem, can I interest you in a secret for make 3 million $ from home only 1h a week?
18:12
DDD is not for junior developer. You is need of suffer enough years for understand you need DDD.
18:12
I like work on domain model with DDD. Is like sexy time of project. Is very nice!
18:14
The Curse of DDD: when you talk of DDD, you lose your audience because it's too domain-specific, or because it's too abstract.
18:15
"DDD in practice is 1% domain analysis, 99% wonder if do DDD well."
18:16
Is proof Composite pattern is exist in holy DDD domain of cargo shipping: pic.twitter.com/UnND2RsVVM via @usmanm
18:17
"DDD Quickly" ebook is good for know quickly you need lot of time for learn DDD.
18:19
Is not fair: noble Entity is born with identity, but modest Entity is born like Value, is have no identity before marry a database
18:19
In upstream-downstream relationship of Context Mapping, there is type of relationship Masochist or Sadist?
18:20
Once you master DI and can decouple your model objects from frameworks, you can take the next step and decouple them from business logic too
18:20
OH: "DDD: Invented by Eric Evans. Explained by others."
18:21

ладно, вернемся обратно )

18:23

как многие в принципе догадались когда проект нормально разбит по DDD, то его очень легко контролировать - каждой тиме по BC и все

18:23

@backendsecret конечно могут всплыть проблемы с коммуникациями между командами, но если оговорено как BC между собой взаимодействуют то

18:24

@backendsecret проблем особых не должно быть

18:24

прежде чем перечислять и разобраться как взаимодействуют между собой BC, нужно определится с upstream / downstream

18:27

контексты могут находится в взаимоотношении upstream / downstream, когда success одного зависит от upstream

18:28

@backendsecret например BC A нужна некоторая функциональность от BC B, которой еще нет, BC B в данном случае upstream а BC A downstream

18:29

@backendsecret успех BC B не зависит от BC A, и наоборот, т е BC B может сделать это и двигаться дальше, а BC A on hold пока BC B не сделает

18:30

какие способы взаимодействия между BC есть:

18:32

@backendsecret есть пара других, но это основные )

18:33

вот тут сижу слушаю трэки из #GTAV , они вполне себе неплохие, особенно #FlyLoFM конечно )

18:34

в #NeedForSpeed тоже неплохие треки, а вот из #Destiny youtube.com/watch?v=93bjEF…

18:36

ACL (AntiCorruption Layer) - используется когда надо отгородить один "кривой" BC или код от другого, часто при Big Ball of Mud (Legacy)

18:38

@backendsecret многим ACL также может быть знаком по разным интеграциям со сторонними системами через API, это тоже яркий пример

18:39

@backendsecret в чем суть? в том что взаимодействие со сторонним BC происходит через определенный слой который защищает ваш BC от

18:40

@backendsecret кривого зачастую и неподдерживаемого кода стороннего BC, либо когда модель ваша не совпадает со сторонней как в случае API

18:41

@backendsecret рассмотрим пример с API

18:41

@backendsecret есть какой-нибудь сервис поиска отелей (аггрегатор), вам надо с ним интегрироваться, с вашей стороны Inventory BC

18:42

@backendsecret очевидно что скорее всего у вас в Inventory domain model другая модель чем у них поэтому чтобы убрать этот Impedance Mismatch

18:42

@backendsecret применяют ACL, в который входят трансляторы из вашего BC в их и обратно

18:43

@backendsecret т е при получении информации об отеле из стороннего сервиса вы транслируете свой отель в их и обратно, т е T -> A / S -> T

18:44

@backendsecret T - translator, A / S - adapter или service который работает в терминах их domain model.

18:44

стоит отметить что в коде на если говорить про всякий port/adapter нет никаких папок AntiCorruption, оно все спрятано за конкретным adapter

18:48

@backendsecret на уровне Domain Model только контракты

18:49

OHS + PL - просто API и все, ярким примером PL (published language) является кстати SOAP, когда часть UL шэрится наружу другим

18:50

OHS + PL / ACL часто идут парно, т е один сервис как понятно предоставляет API (OHS + PL) а другой лепит со своей стороны ACL трансляцию

18:50

можно сделать и ACL / ACL если у вас только между собой два сервиса взаимодействуют, но когда с одним сервисом взаимодействуют много

18:51

@backendsecret то поддерживать 100500 ACL со своей стороны BC становится сложно, и делают OHS + PL для всех downstream

18:52

мля , пропустил 9000 твит, its over9000 youtube.com/watch?v=SiMHTK…

18:53

Customer / Supplier, это классика upstream / downstream, один BC заказывает нужную функциональность у другого BC

18:55

@backendsecret customer тут downstream, но он имеет полный контроль над процессом в плане управления, может отменить свои требования

18:55

@backendsecret таким образом upstream Supplier не нужно будет что-то делать

18:55

@backendsecret зачастую пример customer / supplier это разные BC которые обмениваются Domain Events

18:56

Shared Kernel - два BC делят общий код, конечно это плохо, но иногда так бывает, отсюда появляется куча дублирования, god object, etc

18:57

Conformist - upstream BC и их команда знатные мудаки, которые не хотят помогать downstream, в итоге downstream просто мирится со всем

18:57

@backendsecret и вместо переделывания каждый раз например того же ACL, downstream просто принимает модель без изменений от другого BC

18:58

Separated Ways - проекты мало что общего на данный момент имеют, и их проще разделить на два независимых чем пытаться интегрировать

18:59

есть еще Partnership конечно для любителей лапше кода и лапше функциональностей - оба BC разрабатываются одновременно, а также

19:02

@backendsecret совместные фичи выливаются вместе в определенный срок, понятно что это плохой тип взаимодействия и приводит тупо к deadlock

19:02

собственно это и весь DDD Strategic базовый, для особо интересующихся есть Strategic углубленный Segregated Core / Highlited core

19:06

@backendsecret в принципе ничего сложного, но лучше туда забегать во второй или третий раз, чтобы мозги не вскипели

19:07

вот в целом такой DDD Strategic базовый и есть, легко его пропустить или не заметить и получить совсем не тот результат который хочешь

19:09

если подытожить про наш мифический e-commerce online магазин и что мы получили:

19:12

не знаю стоит ли подробно рассказывать про DDD Tactical т к там ничего особенного нет, просто набор паттернов и правил

19:17

@backendsecret может у кого-то есть вопросы вида Entity vs VO, Impedance Mismatch problems, Persisntece Ignorance for the win?

19:18

вообще куда потерялись все явисты , дотнетеры из 2k или никто не использует там у вас #DDD ? что маловероятно конечно )

19:19
making a Ruby class private by using 'private_constant' pic.twitter.com/2mNhDEMkRL
19:23

Bloodhound Gang Screwing You On The Beach At Night youtu.be/uTeSkg-YIWI via @YouTube

19:30

хотя есть пара нетривиальных тем в DDD Tactical, думаю можно будет это обсудить позже сегодня или завтра =)

19:31

отвлечемся от #DDD #SOA #DDDD , всякого программирования и прочего, кто как отдыхает на выходных?

19:33

я конечно зачастую охраняю диван т к сил нет, но вот например наш сисадмин попрется скоро на Эльбрус, вертикальный км и т п

19:34
@backendsecret но сегодня среда!

я все еще во вторнике, как вы там потомки в среде? освоили космос?
twitter.com/SheVasya/statu…

19:35
Я поняла. У @backendsecret сломался бот для твиттера и натвитил весь материал за неделю сразу в один день! О_О #web
19:37
@backendsecret какие выходные, когда ещё два больших рефакторинга, одна здоровая фича и интеграция крупного клиента?)

да тут рефакторинга то на 2 часа ..... 10 sprints later ;D
twitter.com/strizhechenko/…

19:40

Electric Six - Gay Bar youtu.be/-XNFokmDKrE via @YouTube

19:42
@backendsecret о, помню в караоке исполнял это

есть еще такое ) youtube.com/watch?v=2a4gyJ… twitter.com/DimaSharikov/s…

19:45
@backendsecret > Listening at double speed is audio cocaine
19:48

есть тут те кто используют mercurial до сих пор? я например использую, не по своей воле конечно

19:57

пойду пробегусь по разным аккам может вам что-нибудь сюда накидаю

20:00
@backendsecret у нас в компании основные проекты на нем. Моя команда уехала на GitHub. Лично считаю hg приятней и удобней. Git сложноват.
20:05
@backendsecret использую, мне норм. Алсо OpenJDK использует.
20:05
@backendsecret а можешь дураку объяснить в чем принципиальная разница у git, svn, mercurial?

не, мне CTO объяснил про разницу в диффах, хэдах, etc, я просто делаю commit, merge, push, conflict: хэлп энибади twitter.com/DimaSharikov/s…

20:06

немного бесит правда что нормально у mercurial ветку не закроешь если сделал branch, приходится коммитить, etc

20:08

Modern Talking - Cheri, Cheri Lady youtu.be/rOBSv7UJ8II via @YouTube

20:11
@backendsecret @DimaSharikov одно распределенное, другое нет + в гите мержить проще вроде + rebase и жонглирование коммитами как вздумается

я так жонглировал тоже коммитами, делал черипики в итоге снес папку и сделал ctrl+c / ctrl+v ) twitter.com/__pewpew__/sta…

20:14

для тех кто не может смириться с однопоточностью в php и хочет псевдо - параллелизма =) github.com/kriswallsmith/… github.com/huyanping/simp…

20:18
@backendsecret @DimaSharikov это пока не приходится поддерживать несколько lts релизов, которые разошлись в коде, но фикс нужен одинаковый
20:19
@backendsecret @DimaSharikov основное отличие svn от git в подходе к коммитам: в svn когда хочешь поделиться, в гите для себя коммитишь
20:19

судя по хэштегам #VK снова решил прилечь, как по мне то после ухода @durov #VK уже не торт

20:22
И раз уж мне приходится работать с рельсами, то мб дадите какой-нибудь годный гайд/ман? @backendsecret

с рельсами завязал сразу как увидил всякие paginator в ActiveRecord, но может кто-то посоветует twitter.com/7rulnik/status…

20:25

второй раз уже промазал мимо ссылки, однажды так в рабочий скайпо чат проном промазал, неловко было, да

20:26
@backendsecret я б тож с радостью завязал бы, но… Там даже контроллер с js'ом внутри есть хаха

люди страдают и погибают twitter.com/7rulnik/status…

20:29

кстати QML классная вещь, но я так и ниасилил ее в пуфоне

20:30

вопрос для знающих, что лучше rabbitmq в псевдо AP или 2 rabbitmq через всякие consul?

20:32

поставил #worldwide тренды в хэштегах т к локальные это тьма

20:38

для тех кто все ищет что почитать но не может найти ) github.com/papers-we-love…

20:39
@backendsecret вот это действительно опасно ))) а еще кричат, что говнокодеры в пхп сидят)

все так, но php это как автоваз, теперь долго еще придется доказывать, что не верблюд ) twitter.com/kotchuprik/sta…

20:40

вот тут костыли еще есть, вставайте и идите github.com/icicleio/concu…

20:46
@backendsecret Да, мы используем. В небольшой команде с TortoiseHG - очень приятно. В большой наверное бы мешала каша из веток
20:51
@backendsecret @github а если нужна норм многопоточка и чтоб код писать без оглядки, то #golang || #rustlang || что-то ещё?

я бы взял erlang / elixir , надо с акторами поиграться, гоферы это фу twitter.com/ruFog/status/6…

20:52
@mkuleshov @backendsecret git делали специальные ребята для своих специальных задач. Там hg бы обломался

может быть twitter.com/eqr1234/status…

20:52

кстати кто там просил русскоязычных #IT подкастов, их есть у меня =) github.com/AveVlad/russia…

20:53

> Your Tweets earned 120,191 impressions over the last 24 hours pic.twitter.com/RPMTUyM7eI

20:57
PEV: Postgresql Explain Visualisation. Holy cow, I want this for MySQL, too! tatiyants.com/postgres-query… pic.twitter.com/SrSpqBVEBQ
21:02
Dead again. Time to change the bitcoin logo! by laurentmt
redd.it/41tzkk pic.twitter.com/qGTXhk2M0x
21:05
Everything that's wrong with the world in one screenshot. pic.twitter.com/s4S415CDPK
21:08

у кого кстати какие соображения по поводу того почему #dart не выстрелил?

21:13
@backendsecret костыли, как и TypeScript
21:16

вот еще для тех кто любит упарываться по юнит-тестам в php и coverage 100 % github.com/Vectorface/dun…

21:17

о том куда еще можно приставить #AOP в php #DbC github.com/lisachenko/php…

21:19

вот кстати что-то похожее на #DDD Tactical github.com/elcodi/elcodi

21:20

для тех кто решил узнать почему тормозит #postgresql и прочие вещи github.com/rxin/db-readin…

21:21

вот такой есть еще список ) github.com/ziadoz/awesome…

21:24
@TvorZasp @backendsecret @ruFog @github самый крутой мануал по гоу где? хочу посмотреть что это.

гоферы покидайте ссылок человеку twitter.com/Onotoly/status…

21:29

на сегодня наверное все )

21:29

# Среда 255 твитов

Блог python на хабрахабре — Python и красивые ножки — как бы я знакомил сына с математикой и… goo.gl/fb/a3xqlL

с детства такие вредные вещи подсовывать детям, мдауш twitter.com/pep8blog/statu…

7:40
@backendsecret прям бери и открывай свой коверкинг-центр! со стартапчиками, смузи, макачинками и фрапучинами.
7:41
@backendsecret @DimaSharikov @sam_dark эта тема закрыта уже, да?

нет, просто я ушел спать ) twitter.com/gvsmirnov/stat…

7:41
В @backendsecret какой-то сектант вещает
7:43
@backendsecret на сегодня? по-моему это была недельная, если не месечная норма =D
7:44
@backendsecret @sum3rman @TvorZasp а если эрланг сравнить со скалой то насколько она уступает? Зависимость от JVM не в счет

там @sum3rman отвечает на ваши и наши вопросы twitter.com/ruFog/status/6…

7:45
@pinyslutty @backendsecret насколько помню, скайп в sqlite базу хранит(ил), и удаление при этом - всего лишь флаг в этой базе.

о том почему опасно кидать прон в скайпочате twitter.com/Onotoly/status…

7:46
Закончите фразу: "везде всё время баги, а если нет багов, то тормозит, а если не тормозит, то ..."
7:46
@ruFog @sum3rman @backendsecret @TvorZasp implicits в Scala это отличная вещь. Но как и любую отличную вещь, эту можно использовать неумело
7:47
@backendsecret тебе бы стоило начать с вводного курса в DDD, многие ж не знают что это такое и сейчас не могут тебя читать

так курс был вводный, пара твиттов и т п, потом ушли в Strategic twitter.com/Timrael/status…

7:48
@backendsecret @notxcain изучение Scala можно начать с книги, коих много. В них всё разжёвывается. Или курс на Coursera от Мартина Одерски
7:48
@backendsecret из восьми чeловeк команды у нас -- двоe альпинистов и один скалолаз
7:48
@gvsmirnov @backendsecret не, просто любопытно. Когда сидел на hg в последний наз мне пришлось обвешаться кучей модулей, чтобы стало удобно.

тоже так сделал, у меня .hgrc как "Война и Мир" по размеру twitter.com/43oN/status/69…

7:49
@gvsmirnov @backendsecret но зато инфраструктура вокруг гита развернулась побольше, чем у меркуриала
7:50

сегодня наверное немного меньше тут буду, т к надо закрывать таски из спринта, аджайл все дела )

7:55
@ruFog @sum3rman @backendsecret @TvorZasp а какие есть сложности с имплиситами?
7:57
@backendsecret я лично неоднократно встречал сервисы, которые умеют в гитхуб, но не умеют в произвольные гиторепозитории :)
8:00
@backendsecret хайп достиг цели, Git нынче — default VCS. Что не значит «лучшая» :)
8:04

Arias - Andromeda youtu.be/vsfxGs6siRY via @YouTube

8:06
@eqr1234 @mkuleshov @backendsecret вы будете смеяться, но Mercurial начинали делать ровно для тех же задач — en.wikipedia.org/wiki/Mercurial… :)
8:09
@backendsecret из того, что нашлось навскидку — app.shippable.com.
8:12

о, нашел тулзу для рисования рисунков, думаю порисовать вам тут про то как связаны domain parts / bounded context и про связи между BC

8:17
@backendsecret “рисование рисунков” - сразу чувствуются следы пхп в организме. От создателей масла масляного?

niet, просто так веселее звучит что-ли twitter.com/nimnull/status…

8:20
@backendsecret что насчёт деплоя на прод с помощью гита? Или это bad practice?

true деплой это ведь через CI сервисы и прочее, ну Jenkins то любой может настроить ) twitter.com/followalgerd/s…

8:24

у нас кстати плоховато с деплоеем, вот думаем може docker притащить чтобы сервисы было легко разворачивать, кто что посоветует? =)

8:27
@backendsecret Docker рулит! Рекомендую Tutum.co еще заценить для ркестрации. Там пока бета, но уже впечатляет.
8:31
@backendsecret @strizhechenko деплою нужна атомарность, откат и скорость. И минимум зависимостей. Если сервер ce ляжет, то как альтернатива
8:35
@backendsecret смотря что и в каком количестве разворачиваете.Docker классный
8:35
@backendsecret И заработать на жопу ещё 100500 новых проблем?
8:46

yandex music предлагает купить HQ качество треков, ну да..... в России то )

8:49
@notxcain @ruFog @backendsecret @TvorZasp ну вот implicit conversions через которые делают ops, это самое тяжело заметное без IDE, и даже с.
8:49
@ruFog @backendsecret Может и решите 5-10, ну ок 15 проблем. Но заработаете на 5-ую точку 20 новых.
8:50
Как-то я хотел сделать себе нормальный сайт. По привычке прогал его на C++, по полдня выжимая миллисекунды из каждой функции.
8:55
@backendsecret из пользы — скорость деплоя, если образы билдить через CI и после тест-цикла пушить в прод. Ну и откат назад проще/быстрее
9:06
@backendsecret сильно легче на станет. Нужно будет образы собирать и докер провижнить, а потом еще связи между контейнерами настраивать
9:06
@de_gis Я же не сказал, что это абсолютное зло :) Где-то читал, что в России неправильно его готовят. @backendsecret

кому как, для меня скрам митинг это иногда выходной, т к он может длится 6 часов ) twitter.com/dcromster/stat…

9:10
@backendsecret скрам к хуям
9:11
@backendsecret 6 часов, рили? Когда у нас планирование стало порядка двух часов занимать - все взвыли :3

ну там много тасков обсуждается и все вместе backend / frontend, с перерывром на обед конечно ) twitter.com/43oN/status/69…

9:17
we all collectively pretend GitHub OctoCat is a cute lil' mascot instead of horrifying night sweat terror fuel pic.twitter.com/vLttYvxVRE
9:22

кстати кто-то lmax disruptor использовал? какие ваши ощущения? )

9:35

@backendsecret вон @lisachenko прикрутил его у себя, говорит полет нормальный, можете его поспрашивать подробнее тоже если что )

9:36

вот ссылка в том числе на php binding, сами понимаете на чем написан софт github.com/LMAX-Exchange/… github.com/prolic/PhpDisr…

9:39

как я не люблю SOAP, но снова прилетела интеграция где SOAP

10:07
@OdinYury @backendsecret без докера проще. У меня systemd-nspawn который запускается юнитом. Никаких лишних демонов и супервизор искаробки.
10:11
@backendsecret ну вот фиг знает. Писать contract-first сервисы иногда даже приятно.

особенно когда нет доков почти или они кривые, а API падает из-за кривого xml ) twitter.com/43oN/status/69…

10:14
@backendsecret обнимемся
10:14

пока особо и времени нет, то сместим нашу дискуссию в сторону #EDA

10:21

кто какие message oriented middleware использует? у нас вот RabbitMQ просто потому что он простой как пробка, ну и может кластерится

10:22
@backendsecret ага, когда его лепят не либами а $xml .= '<tag>' . $var...

бывает и такое да ) twitter.com/Onotoly/status…

10:35

вот и обед

10:35
@nimnull @backendsecret а без докера нужно деб-пакеты собирать и нативные процессы провижинить. Проще что ли?
10:45
@backendsecret это ж не middleware, это ж тупо mq. Нахер усложнять? Насчет простоты — роутинг и rpc юзаете?

один из примеров mom ведь twitter.com/nimnull/status…

11:36
What if Belgium is make of 2 Bounded Contexts with 2 different languages? Oh, Wait...
11:45

кто спрашивал про ru подкасты то тот список составлял @avevlad , можете у него еще поспрашивать ссылок

11:53

быстро поднятое не считается упавшим, вот ровно 5 минут назад случилось и 200 сообщений в почту )

12:03
@backendsecret вроде пагни из скб-контура запилили неплохую алертилку недавно, сам не щупал, только слушал чувака.
github.com/moira-alert
12:11

вот тут @sam_dark советует rollbar.com и getsentry.com/welcome как полезные тулзы для exceptions handling

12:14
@backendsecret @sam_dark для руби можно errbit на своем сервере поднять
12:16
@backendsecret сейчас чисто для себя юзаю grafana + influxdb + crontab с башем без алертов для мониторинга всякой своей фигни, в итоге
12:18

многие кто думают что #DDD это rocket science, оглянитесь, вдруг вы уже делаете #DDD но не используете его термины

12:27

и вот еще думаю что где-то в 25 лет для программиста начинается завершающий этап т е годам к 30 можно выкидывать, т к развития 0 у многих

12:39
@backendsecret все люди разные, как раз таки напротив вижу как много примеров после 30 когда проходит спесь и становятся прагматичными

может быть, но скорее всего это просто "добор" того что на ранних этапах пропустили или на что забили twitter.com/mpak999/status…

12:43
@backendsecret зависит от человека

несомненно, но в большинстве случаев люди просто плывут по течению, поэтому это исключения из "правила" twitter.com/poebat/status/…

12:45
@poebat @backendsecret тут приколюха почти в духе фрагментирования fs у мозга и в итоге i/o деградирует )
12:45
@backendsecret добро пожаловать в европы, тут в 25 многие ещё только phd защищают, и из опыта имеют только стажировки
12:51
@backendsecret мне всегда казалось, что завершающий этап после 40 начинается, так как я знаю много очень крутых разработчиков за 35 лет

есть исключения несомненно, но мы то знаем что их не так много twitter.com/anton_davydov/…

12:53
@backendsecret Вижу много людей которые к 25-30 начинают только врубаться во все. Да и развитие часто скачкообразное в реальной работе.

ну если сидеть непонтяно где и просто просижвать штаны то да ) twitter.com/iloldhardly/st…

13:24
@backendsecret Это я не к тому, что все люди до 25-ти лет идиоты, а к тому что лично у тебя максимализм ;)

с чего бы? мне 25 вот было, а с возрастом у людей появляются семьи, дети не до программирования там в общем twitter.com/freiksenet_ru/…

13:25
@backendsecret @iloldhardly Я знаю программистов которые после 25 только начали программировать и ничего

вопрос в качестве этих программистов, мне тоже как-то говорили что грузчик стал сишарпером и что? twitter.com/freiksenet_ru/…

13:26
@backendsecret не-е, уже поздно, как только программист отказывается работать за еду, его нужно выкидывать, инач он в манагера перерождается

все так twitter.com/Dev_De_Ar/stat…

13:27
@backendsecret не-е, уже поздно, как только программист отказывается работать за еду, его нужно выкидывать, инач он в манагера перерождается
13:27
@backendsecret @iloldhardly Скорее к 25-30 годам люди лучше начинают понимать и ощущать свои реальные пробелы в знаниях.

конечно, главное чтобы их не было много, но мы говорим о тех кто останавливается и тормозит в развитии twitter.com/unix_tips/stat…

13:28
@backendsecret Часто бывшие «грузчики» более прагматичны и лучше решают задачи бизнеса, чем абстрактные развивающиеся разработчики :)

разве что лучше олимпиадников которые оптимизируют коней в вакууме twitter.com/iloldhardly/st…

13:29
@backendsecret @Dev_De_Ar рекомендую поработать за деньги и хотя бы немного понимать своё участие в их зарабатывание, например,для компании.

не понимаю о чем это, я простой советский бомж twitter.com/unix_tips/stat…

13:30
@backendsecret @SiliconBangalor а где этот фашист работает? Не в Яндексе случайно?

не, я практикую джихад в noname компании, куда мне до Яндекса ) twitter.com/Barlog_M/statu…

13:31
@backendsecret я без преувеличения скажу, что все действительно крутые программисты, которых я знаю, примерно 30+
13:31
@backendsecret я без преувеличения скажу, что все действительно крутые программисты, которых я знаю, примерно 30+

прямо таки все? ) twitter.com/White_Desay/st…

13:31
@backendsecret с другой стороны такая тенденция с возрастом действительно есть.
13:35
@backendsecret зависит от человека, а не от возраста.
13:35
@backendsecret хотя независимо от возраста, стоит хапануть затяжное выгорание, и саморазвитие идёт куда подальше.

вот кстати да, получить burnout и не кодить полгода, такое тоже бывает ) twitter.com/AntonyKapustin…

13:35
@backendsecret по JS'у может и да, но если посмотреть какой-нить митап гугловый/постгре/компиляторы..., то там 40+ мелькают мама не горюй)
13:41
@backendsecret По этому-то после 30 программисты и круты — естественный отбор же. Выгорит восстановится — качество кода не упадет.

вовсе нет, выгорание не означает остановку полную, а те кто плывут мирно по течению и до 50 доплывут ) twitter.com/iloldhardly/st…

13:42

Gary Numan - Cars youtu.be/Ldyx3KHOFXw via @YouTube

13:45
@backendsecret @AntonyKapustin @White_Desay да лана, возраст не важен конечно. половина страны 23-25 летние сеньоры и к 30 годам манагеры :)
13:56

Gogol Bordello - Lost Innocent World youtu.be/kG4x5q9YhA4 via @YouTube

14:25
@backendsecret @43oN I know that feel, в одном проекте на Питоне пришлось отправлять вручную http запросы подставляя в стринг значения
14:58
@freiksenet_ru @backendsecret человек с семьей вообще не человек. он, гад, за идею не работает и много думает :)
15:20

солнце вроде село, значит можно двигаться домой )

15:42

кто как считает, когда нужно повышать зарплату программисту и насколько?

15:42
@backendsecret если человек отсидел несколько лет на легаси проекте, то он может сломаться. btw это хорошо коррелирует с возрастом
16:33

добрался до дома, в городе сплошные пробки

16:36
@ipronix @backendsecret @AntonyKapustin @White_Desay толковая молодёжь всегда за праздник, но искать их это адова боль. я только об этом.

все так, такие люди на вес золота, а если еще саморазвитие есть, то надо к батарее приковать twitter.com/ivanenok/statu…

16:38
@ipronix @backendsecret @AntonyKapustin @White_Desay ну надо было уже говорить - "мой хлеб им в рот не поместится", чо :)
16:39
@backendsecret @SiliconBangalor да, с пыхой к 30 лучше завязывать

ну ну, за последние годы php вырос очень сильно twitter.com/olegzeee/statu…

16:40
@backendsecret всегда и намного.

А если серьезно, то пересмотр 1-2 раза в год вполне приемлем.

16:40
@backendsecret когда попросит. на столько, на сколько он полезен и сможет это аргументировать.

мне еще говорили вариант про сколько работает в фирме / выслуга лет twitter.com/ipronix/status…

16:41
@ipronix @backendsecret так это и есть шантаж(:
вообще есть всякие перформенс ревью, но они не идеальны

у нас практикуют EPR twitter.com/DaryaChu/statu…

16:41
@DaryaChu @backendsecret эти ревью тоже забавные - "претензий по работе нет, но вот один менеджер считает что вы не достаточно дружелюбны"
16:42
@DaryaChu @backendsecret лучше всего - "я принес миллион фирме, поднимите зарплату на 5%"
16:42
@backendsecret @ipronix @AntonyKapustin @White_Desay да лана, явисты вместе с джавой умерли 15 лет назад! любой жабаскриптер подтвердит! :)
16:43

кстати секретный диванон, я нахожусь в Крыму, и тут действительно все плохо, серьезно =)

16:56
@backendsecret как много компаний обитает там? и почему Крым?

большинство компаний было на аутсорсе, сейчас закрылись / уехали т к с Крымом иметь дела проблемно ) twitter.com/kotchuprik/sta…

17:03
@backendsecret @SiliconBangalor так и js вырос, но языком от этого не стал
17:04
@backendsecret плохо потому что вы там ? или это не связано ?

все верно, хорошо там где нас нет, на самом деле тут почти Москва, по ценам пока что, ну и менталитет людей ) twitter.com/ipronix/status…

17:07
@backendsecret та-же фигня и в Славянск-е, многие закрылись и разбежались. Админить некого теперь =/

вся Украина по факту это один большой аутсорс ) twitter.com/POS_troi/statu…

17:08

поскольку вроде народ живой то надо потвиттить про #DDD

17:12

могу кстати поотвечать без политсрача конечно на вопросы про Крым и прочее, если кому вдруг интересно, про IT тут вроде рассказал )

17:19
@ted_dunning @mapr Modern Streaming Analytics, Flow vs State. #ddtx16 pic.twitter.com/r8nQph6rr5
17:21

все мажу и мажу мимо твиттов, что такое то, скоро и прон придется скидывать

17:30
@backendsecret стоит ли туда ехать отдыхать на майские праздники?

красивый парадна 9 мая есть, самолеты тоже низко летают что сигналки срабатывают, но сервиса нет, можете снять домик
twitter.com/ddddm/status/6…

17:30

но несомненный плюс Крыма это природа, ооооочень красивая и живая, несмотря на дачи которые тут успели уже построить все кому не лень

17:33

на переправе кстати когда на пароме плыл видел дельфинов, любят они с паромами играть )

17:34
@backendsecret @POS_troi вот он первый положительный момент :)
17:37

из окна у меня море видно, не баварские конечно сосики, но думаю тоже сойдет =)

17:39
@olegzeee @backendsecret @SiliconBangalor перейти от Tactical к Strategic #ddd ну и сам собой получиться decouple от ЯП.

Валентин все не унимается ) twitter.com/Onotoly/status…

17:40
@backendsecret чащe всeго, дeньги для программиста нe являются мотиватором, но могут стать дeмотиватором. Повышать рeгулярно, но понeмногу
17:42

Eddie Murphy - Party All the Time youtu.be/Wu_T5RykJkI via @YouTube

17:43

но людей конечно понемного начинает бесить текущее положение, но терпят )

17:45
@backendsecret @POS_troi ааа. пусть проливы вернут и я буду протурецким :)
17:46
Why do webdevs choose languages other than PHP despite Mark Zuckerberg having proven that you can build a highly-scalable platform in PHP?
17:52

вопрос тем кто в Германии живет, вы там хоть на Бундеслигу ходите? или все забили?

17:53
@backendsecret 22 дурня пинают мячик - на что смотреть ?
17:55
@freiksenet_ru @backendsecret у нас в компании нeгласно цeнятся "ипотeчники". Им, обычно, дают возможность заработать большe
17:56
@ipronix @backendsecret eсли программист вспомнил про свою зарплату, то, скорee всeго, eму сдeлали прeдложeниe и он ищeт повод остаться
18:01
@develop7 @backendsecret @SiliconBangalor еще Делфи за компанию. Люди, выбросите его из резюме!

кто тогда будет бухгалтерии формочки клепать? ) twitter.com/olegzeee/statu…

18:03
@rubynovich @backendsecret программист не помнящий о зарплате - странный. мягко говоря.
18:03

кто может, то покупайте сейчас домик / квартиру в ПГТ в Крыму, в целом недорого, зато природа / воздух все рядом, не люблю я города )

18:07

начал твиттить про #DDD называется, засидишься тут с вами о жизни поговорить )

18:08
@ipronix @backendsecret кодер, который просит + з/п уже мысленно попрощался с проектом. норм менеджер должен знать когда надо и на сколько.
18:09
@rubynovich @DaryaChu @backendsecret хотели бы удержать - сразу предложили бы +15к и вопрос закрыт. а крохоборы хотели сэкономить

дело такоеэээээ, экономить на программистах нельзя, т к они это сразу чувствуют ) twitter.com/ipronix/status…

18:12
@ipronix @backendsecret вот хороший менеджер это должен увидеть. кодер видит, что его труд ценят и это мотивирует сильней, чем выпрошенное
18:12
@backendsecret перебои света наличествуют?

в городах не особо, только редко на окраинах, а так поселки отключают некоторые по графику 3 через 3 twitter.com/ruFog/status/6…

18:14

очень умный человек @rubynovich , обязательно посоветуйтесь с ним, когда захотите менять работу / просить повышение

18:15
@ipronix @DaryaChu @backendsecret с программистом нe угадаeшь. У нeго зарплата 250к и что eму твои 15к? Крохоборство, мeня цeнят на 15к и тд
18:17
@ipronix @DaryaChu @backendsecret с программистом нe угадаeшь. У нeго зарплата 250к и что eму твои 15к? Крохоборство, мeня цeнят на 15к и тд

тут многие напряглись от рейтов, возможно все таки в баларусских рублях? twitter.com/rubynovich/sta…

18:17
@backendsecret это всe жизнeнный опыт, жeна вeрховный hr и работа над проeктом "бизнeс-мотиватор"
18:22
@backendsecret @DaryaChu @ipronix по большому счeту -- всe равно на сколько повышать. Eсли ты нe думаeшь об уходe, то любоe повышeниe -- гуд
18:27
@backendsecret в hr обычно идут дeвушки молодыe , красивыe и общитeльныe, а вeрховный hr -- это ужe знак особо качeства. Нe смог устоять
18:30

обратно немного про #DDD и взаимодействия Domain (domain parts - core, supporting, general, cm) и Bounded Context

18:38

напомним что Domain разделим, и почти всегда у вас в проекте будет несколько Domain Model (Domain Part + Bounded Context)

18:38

@backendsecret интересным вопросом является как правильно сопоставить нужный bounded context (solution space) с нужной domain part

18:39

@backendsecret зачастую когда один Bounded Context пытаются натянуть на несколько domain parts, в итоге получается совсем плохо

18:42

@backendsecret начиная от затыков в логике проекта, т к нарушают SRP, появляется много общего кода, нет четкого языка UL, все размыто

18:42

@backendsecret невозможно нормально разделить проект по командам, изменения одной команды начинают рушить изменения другой, все знакомо

18:43
@backendsecret все как в крыму короче
18:46
@rubynovich @backendsecret ваши бы слова да богу в уши
18:52
@RusAlexander @DaryaChu @ipronix @backendsecret у меня знакомый так в 3 раза поднялся :)
19:02

@backendsecret собственно пересечение двух BC отмечено черной дырой на рисунке, BC - пунктир, Domain Part подписаны pic.twitter.com/ATIowSthG0

19:04

@backendsecret в рамках domain part 1 может существовать два разных BC, что вполне норм пока они не пересекаются

19:04

@backendsecret это лишь означает что domain part можно дальше доразделить и получить еще большую независимость в том числе в коде

19:05
@backendsecret bounded context в приложении распихивать по разным папкам?

вполне, у нас так кое-где было, т к разделять легаси сложно, но возможно twitter.com/RusAlexander/s…

19:05

@backendsecret со временем оно все равно распадется на независимые приложения общающиеся через event bus, вот и SOA есть

19:06

@backendsecret но данная ситуация с пересечением BC печальна тем что в коде появятся god object User, который и User(login, pass) и Customer

19:07

@backendsecret поскольку это не просто пересечение BC, но пересечение BC из разных domain parts с разными понятиями в UL

19:07

@backendsecret другая ситуация, это когда в рамках одной domain part есть несколько не пересекающихся BC, тогда можно смело дробить domain

19:08

@backendsecret и получить полностью независимые в том числе на уровне кода Domain Models

19:08

@backendsecret третья и самая идеальная ситуация это как все поняли, сопоставление 1 в 1, когда одной domain part соотв. один BC

19:09
@RusAlexander @backendsecret можно даже по разным репозиториям
19:09

@backendsecret в такой ситуации даже делать ничего не надо, вы уже постарались и все верно сделали =)

19:10

@backendsecret четвертая ситуация это когда разные BC пересекаются в рамках одной domain part как показано на рис pic.twitter.com/TA8Q67xCP9

19:12

@backendsecret это означает что когда выделяли UL, то не до конца разделили слова и их значение, проблемы те же - общий код, god object, etc

19:13

@backendsecret таким образом это наиболее вероятные отношения между DP / BC которые у вас могут быть

19:14
@backendsecret распадется на плесень и липовый мёд :) сорян, не удержлся!
19:14

@backendsecret среди них есть как хорошие так и плохие, главное следить за DDD Strategic и все будет хорошо

19:15

@backendsecret ну и конечно очевидно что когда 1 DP и ей соотв. 1 BC то легко превратить в сервис, деплоить, независимо изменять

19:15
@stasian @backendsecret серьезный ответ на серьезный вопрос - stackoverflow.com/a/24224902/500…
19:16

пока все не разбежались, то сейчас еще порисую криво про взаимоотношения между BC (ACL, OHS+PL, Customer / Supplier)

19:17

начнем с простой context map, где есть два BC и shared kernel pic.twitter.com/N1HZClwOaY

19:40

@backendsecret похоже правда как-будто один пингвин клюет другого )

19:41

@backendsecret при данном пересечении BC уже обсудили какие проблемы, но вполне допустимо и жизнеспособно

19:41

@backendsecret если вы будете держать shared kernel не слишком большим, и команды будут уведомлять об изменениях друг друга и согласовывать

19:42

другой пример, это когда два или несколько BC взаимодействуют по ACL pic.twitter.com/S2fEdHP3kz

19:43

@backendsecret как видно из этого рисунка BC 1, взаимодействует с другими через несколько разных ACL, вроде все норм пока что

19:43

@backendsecret но как только команда BC начинает понимать что "стрелять дробью" менять код 4 ACL это долго и трудоемко, то они

19:44

@backendsecret просто заменяют несколько ACL на один единственный OHS (open host service) + PL (pulished language)

19:45

@backendsecret в PL входят необходимые и достаточные слова из UL чтобы другие BC могли взаимодействовать с ним, тупо API в общем

19:45

ну и относящееся к предыдущему о том как эволюционируют несколько ACL в 1 OHS / PL, будет как - то так pic.twitter.com/u6TlUPimPM

19:46

@backendsecret только в обратную сторону, просто этот рисунок был нарисован вначале )

19:47

@backendsecret таким образом команде у которой было несколько на своей стороне ACL, не надо особо переживать за другие Bounded Context

19:47

@backendsecret поскольку команда предоставляет API (OHS / PL) в своем BC и другие BC могут легко с ним общаться вне зависимости от кол-ва

19:48

последняя context map, это customer / supplier, ярким примером которого являются как раз таки domain events pic.twitter.com/EHS2N21Lg4

19:48

@backendsecret customer "заказывает" некоторую функциональность у supplier и ждет пока это сделают, но как и говорил

19:49

@backendsecret customer может отозвать запрос, таким образом несмотря на то что customer downstream, контроль над самим процессом у него

19:49

по-хорошему нужны только два типа взаимодействия customer / supplier и OHS + PL / ACL, т к для SOA это классика: API + events

19:50

@backendsecret но в зависимости от того какой это код, и насколько команды промахнулись при разделении domain на части, может выйти и похуже

19:51

это наверное все, что я хотел вкратце рассказать про DDD Strategic, чтобы хоть немного было понятно и не было баззвордов как говорили

19:52
текущему автору @backendsecret с его аватаркой и терминологией явно не место в его текущем географическом положении.
19:52
текущему автору @backendsecret с его аватаркой и терминологией явно не место в его текущем географическом положении.

на самом деле в 6 лет я понял что внутри я явист, на всех уровнях кроме физического =) twitter.com/strangeqargo/s…

19:53
@strangeqargo @backendsecret да, я ему давно говорю - едь в киев, даже вакансии под него видели :)
19:54

Таким образом наш мифический псевдо e-commerce онлайн магазин распадется на несколько Domain Model или если про код - приложений:

19:57

@backendsecret Inventory (Catalog), Purchasing, Marketing, Payment, Account, Accounting, Shipping, Tracking (трек посылок etc)

20:00

@backendsecret понятно что все это легко приходит к сервисам в терминах SOA. Эти сервисы elementary / atomic

20:00

@backendsecret с помощью edge services / API gateway можно строить какие угодно сервисы под разные платформы, ну как делает Netflix и прочие

20:01

@backendsecret перечисленные сервисы лишь будут отдавать данные по API, и взаимодействовать с собой через MOM выбранный вами

20:02

@backendsecret в целом схема проста и понятна, скейлится как угодно, но только появляются проблемы связаны с distributed системами, а именно

20:02

@backendsecret порядок сообщений? точно один раз доставлено? нужно быть fault tolerance если один сервис не работает

20:03

@backendsecret как мониторить сервисы на жизнеспособность? какой должна быть consistency? наперед забегая скажу что eventual

20:04

@backendsecret как сделать быстрый перезапуск или исключение упавших сервисов? в общем все проблемы связанные с SOA, но зато и плюсов много

20:05

@backendsecret можно менять систему как хотите, становится гибкой для требования бизнеса

20:05

@backendsecret программисты довольны, и особо не пересекаются, autism intensifies, масштабируйте пока хватит денег

20:06

@backendsecret если вдруг программист накосячил в marketing или каком-нибудь analytics BC то остальной код то будет работать (!) в теории

20:07

@backendsecret в общем классика monolith VS services

20:08

если немного забежать в SOA, и по поводу того почему eventual consistency а не какая-то из типов strong en.wikipedia.org/wiki/Consisten…

20:10

@backendsecret все просто - бизнес готов пожертвовать частью функциональности, при том что будет работать другое, конечно если

20:10

@backendsecret у вас не упало то что связано с core domain, т к бизнес не будет зарабатывать, а как известно все делается ради денег

20:11

@backendsecret в #DDD как многие уже поняли eventual consistency между разными persistence слоями поддерживается с помощью ивентов

20:12

@backendsecret собственно как и везде, только тут ивенты это Domain Event - что-то случилось в домене, OrderCompleted, InvoicePaid, etc

20:12

в итоге получаем что наша система в целом будет вести себя как AP система в идеале

20:14

@backendsecret да и вообще проще когда к системе меньше требований по consistency и прочих сложных условий

20:15

@backendsecret важно отметить что иногда именно программисты вносят эту сложность, например ивенты

20:15

@backendsecret для бизнеса может быть нормально если ивент придет через 5 или 10 минут, или через 2 дня

20:15

@backendsecret но конечно есть и всякие биржи где задержки должны быть минимальны (но вы не работайте там лучше, поседеете)

20:16

так что как видите никакого рокет сайнс нет, разделил и властвуй, пихай в сервисы пиши книги продавай другим =)

20:17

но зачастую конечно отсутствие софта мешает нормально жить, и приходится костылять

20:18

подытожим в итоге что знаем про DDD Stragetic:

20:19

если кому-то будет интересно ну или нет, то завтра вечером расскажу про #DDD Tactical, вторую составляющую #DDD

20:22

@backendsecret о том что такое persistence ignorance, impedance mismatch, ивенты и как с ними жить, как жить в мультиперсистентных системах

20:22
@backendsecret бляяяяя, где ты этого говна нахватался вообще, школьник поехавший, ради денег my ass

топ кек twitter.com/OhTheAnguish/s…

20:25
подкаст записан, выложу завтра

тут Один что-то записывает, возможно про историю викингов twitter.com/OdinYury/statu…

20:58
— Здравствуйте, меня зовут Анна, я новый тестировщик.
— Очень приятно!
— Это ненадолго.
21:13
@SiliconBangalor Ну или менее олдово - youtube.com/watch?v=RBZXI-…
21:17

у кого есть жены программисты? как вы живете вместе? есть ведь стереотип, что люди одной профессии не могут жить вместе долго

21:21
@backendsecret интересно практикуют ли они парное программирование?
21:24
@backendsecret стереотип ;)
21:25
@OdinYury @backendsecret тантрическое программирование
21:27
@backendsecret Товарищ сисадмин, его жена тестировщик, не погромисты, но одного айтишного поля ягоды, и ничего, живут много лет душа в душу.
21:27
@SheVasya @backendsecret ставят ли они на домашний сервер FreeBDSM ?

ставил я как-то #DLNA сервак дома на ubuntu 14.04, в итоге плюнул и поставил на винду за 15 минут другой ;D twitter.com/OdinYury/statu…

21:29
@SheVasya @backendsecret ставят ли они на домашний сервер FreeBDSM ?
21:30
@SheVasya @backendsecret @OdinYury тантрическое программирование - это одна из причин того, что индусских программистов так много.
21:32
@backendsecret @OdinYury @SheVasya такой тоже ставил )) минидлна правда крутой, после апт-гет нужно всего 1-2 строки в конфиге и рестарт.
21:35
«Наша типизация строгая, но справедливая»
21:38
@backendsecret @SheVasya Заставляет опускать скобочки после себя в коде :(
21:39
Ма, ма, смотри, я программирую на xml! Смотри, вот бин, вот контейнер, вот проперти ставятся. Я энтерпрайз программист, ты не понимаешь, ма!
21:41
Не манер если у вас нету тёти:

Если у вас нету типов,
То и не надо их выводить

21:42
@backendsecret мне Plex понравился, но там dlna как опция.
21:42
  • Здравствуйте, федеральный проект "СТОПХАСКЕЛЬ". Это у вас что, правая свертка? Пожалуйста, монаду уберите, молодой человек.
  • 21:44
    В клофелиновом угаре
    Я пишу на ангуляре.
    Если ж вмазать сразу две,
    То пишу на тайпскрипте.
    21:46
    Не стоит воспринимать всерьёз людей, использующих Sublime, Atom, Vim, Emacs и другие текстовые редакторы для написания кода.
    21:49
    Реакт, реакт — и в продакшн.
    21:50
    -поручик, вы и на скале программировать можете?
    -на скале боюсь - вдруг макбук в пропасть улетит?
    21:53
    @backendsecret @SheVasya тк большинство прогеров ненастоящие, то как таковой проблемы нет
    21:55
    Хотел задать очень крутое тестовое задание типа «разберитесь, что за херня происходит», но еще не разобрался сам и пришлось писать обычное.
    21:56
    @backendsecret @SheVasya другими словами, вопрос можно сузить до "спала ли барбара лисков с дэнисом ритчи?"
    21:57
    Хорошо быть мужиком: понадобился парсер - взял и написал за полчасика

    то чем я занимаюсь pretty much дофига времени со всякими сторонними фигнями ;D twitter.com/Zhiliyo/status…

    21:58

    на сегодня наверное все )

    22:01

    # Четверг 185 твитов

    @nimnull @backendsecret а в бостоне как-то по особенному работают ?
    7:22
    @RusAlexander @backendsecret да, улыбнулся. Свободно конвертируемую валюту нужно знать
    7:22
    @backendsecret это не пхп вырос, это у вас монитор вверх ногами

    конечно twitter.com/nimnull/status…

    7:23
    @asktwi @backendsecret 6 лет в браке, все отлично :)
    7:23
    Поток сознания @backendsecret в моём твитторе imageshack.com/a/img905/3059/…
    7:24
    #kphp все еще быстрее (хоть и не всегда) #hhvm, а #php 7 красавчик по памяти. vk.com/wall4899732_10…
    7:25
    Наиохренненейшая визуализация конкурентной работы в Go от @idanyliuk divan.github.io/posts/go_concu…
    7:25
    @backendsecret пиздец, ты вообще долбоеб? /сс @iamstarkov

    ох уж эти "быдло разработчики" ) twitter.com/blia/status/69…

    7:25
    Что делать, когда тебе предлагают писать на Java?
    7:33
    jonhendren.com вот так должен был выглядеть мой сайт.
    7:34
    @backendsecret @de_gis ну дык я о молодежи ваще, а не о персоналиях. грустное ощущение в целом создается.
    7:43
    @OdinYury @backendsecret горько плакать:)

    как по мне то работать в нормальной команде явистов одно удовольствие постоянный рост как разработчика удобные тулзы twitter.com/crashkin/statu…

    7:51

    сейчас покида ссылок на книги и статьи для тех кто как и я интересуется #distributed но может не знает с чего начать

    7:52
    В Java нужно хорошенько постараться выстрелить себе в ногу, в C++ нужно изрядно постараться этого не сделать. Вот почему?? :-)
    7:53
    "Ты что дебил конченый на продакшн Docker выкатывать?!!!"(c) из производственного совещания :) #cloud
    7:56
    @biercoff_enn @backendsecret а если это ортодоксальные явисты?
    7:56
    @backendsecret @de_gis угу, пойду упорюсь веществами, выскочу на орбиту и стану энторпрайзщиком! :)
    8:02
    @OdinYury @backendsecret обними их :) Но вообще я знаю проекты, где pure Java и всем все нравится. Тебе решать.
    8:02
    @de_gis @backendsecret мы уже год как выкатили и ничего, не падает)
    8:03
    @OdinYury @backendsecret кстати, если это адепты Java 6, то окропи их святой водой и убегай :)
    8:06
    Google AI masters Go.
    But it's only the beginning.
    Next step: Goo.
    8:10
    @backendsecret это больше сарказм, сам пишу на java-scala
    8:13

    отличная книга в которой объясняется разница между local / remote на пальцах и почему SOAP / RPC не торт =) citeseerx.ist.psu.edu/viewdoc/summar…

    8:23

    краткий ввод в #distributed и #CAP #FLP и т п book.mixu.net/distsys/single…

    8:25

    классика для тех кто приходит в #distributed о том какие неверные допущения делают люди ) en.wikipedia.org/wiki/Fallacies…

    8:28

    об основных моментах и затыка в #distributed somethingsimilar.com/2013/01/14/not…

    8:29

    про то, что в основе многих #distributed систем тупо лежит лог и о том как его ментейнить engineering.linkedin.com/distributed-sy…

    8:30

    вот еще от excore Linkedin blog.empathybox.com/post/195749363…

    8:31

    другая подборка по #distributed the-paper-trail.org/blog/distribut…

    8:32
    С HL++2015, оказывается, видео уже можно глянуть онлайн.
    Посмотрел на себя со стороны, не так уж и плохо:) highload.ru/2015/abstracts… #highload
    8:33

    есть много других ссылок, в том числе на youtube, скину их вечером, так что stay tuned #distributed

    8:34
    @backendsecret «Distributed systems: for fun and profit» для сарта норм. github.com/mixu/distsysbo…
    8:41
    @backendsecret заметил, уже давно перестал интересоваться возрастом коллег и знакомых. Возраст, наверное :)
    9:02

    вопрос тем кто работает в офисах, как вам тимбилдинг? часто это у вас бывает? дружите семьями с коллегами по работе? )

    9:03
    @backendsecret я стараюсь держать дистанцию. Всех уважаю, но "дружить семьями" - нет. Лучше быть хорошими коллегами, чем плохими друзьями.
    9:10

    перерыв на обед, всем #EDA

    9:10
    @backendsecret художественная гимнастика какая-то, где после 25 только в тренеры :)
    9:22
    @MaxBorisov @backendsecret да просто вас в лес надо вывести командой, сразу будет тимбилдинг :D
    9:22
    @backendsecret #ddd а насколько доменная модель обычно проникает в код фронтенда?
    11:36
    первое правило проектировки API: тот, кто его использует, должен страдать
    12:35
    Написал кусочек на php, глазки болят. pic.twitter.com/l49cvZpsg2
    14:03
    @backendsecret @nimnull вот вам кстати за чаепитие george-rooke.livejournal.com/457852.html
    14:22
    @backendsecret У некоторых людей развития и нету с самого начала. pic.twitter.com/OQUgOM9z0S
    14:44

    ребята, #distributed час, ждут давно чужие земли нас. В смысле сейчас продолжу кидать полезные ссылки / книги

    16:27

    вот кстати интересно, есть тут те у кого бизнес пишет спеки и прочие доки? кто практикует waterfall?

    16:29
    @backendsecret "хуярь шоб заебись, ёпта"
    16:37

    Маша И Медведи - Земля. youtu.be/SWGvGf6gsYc via @YouTube

    16:41

    основная информация о #Dynamo с примерами как они разбивали ключи и как хранили их #distributed allthingsdistributed.com/files/amazon-d…

    16:49

    подборка от @rystsov который видимо там на #paxos собаку съел ) rystsov.info/#distr_key_val…

    16:54

    я не знаю как это оказалось у меня, но там что-то важное по #distributed это точно hengxin-blog.logdown.com

    16:57

    афир рассказывает про atomic consistency которая в этом вашем #paxos и прочих #CP системах youtube.com/watch?v=QdkS6Z…

    16:58

    о том как gov.uk использует Merkle Tree (они есть и в Dynamo) у себя gdstechnology.blog.gov.uk/2015/10/13/gua…

    17:00

    несколько ссылок на gossip и всякие universal ultra super timeout failure detector

    17:02

    изобрети свой #paxos и получи пирожок с полки paxos.systems/variants.html

    17:04

    отличное объяснение про riak_ensemble и как у них работает #paxos youtube.com/watch?v=ITstwA…

    17:05

    о том как uber научился #DISCO highscalability.com/blog/2015/9/14…

    17:07

    вот еще забыл про #gossip кинуть highscalability.com/blog/2011/11/1…

    17:08

    для затравки наверное хватит, если кому надо могу скинуть больше, в том числе книг ) также фолловьте @sum3rman и других #distributed людей

    17:09

    также советую зафолловить @AterCattus это он там #VK кладет каждый раз и на #Go вам всем уведомления шлет

    17:19

    предлагаю поговорить о #DDD Tactical, может кто-то и не хочет, но акк то у меня, что поделать

    17:21
    I’ve just published a bunch of guides on how RabbitMQ internals work:

    github.com/rabbitmq/inter…

    17:24
    @gregyoung It's uncannily accurately described in bit.ly/the-pragmatic-… as "Programming by Coincidence".

    кстати о том как мы многие выбираем те или иные вещи в архитектуре ) twitter.com/ploeh/status/6…

    18:08
    Musthave cheetsheet for distributed syncs pic.twitter.com/xZ0A5hMSmJ
    18:08

    итак, посколько с #DDD Strategic уже знаем, что такое UL и BC, то неплохо бы знать как это все воплотить в код через #DDD Tactical

    18:12

    в #DDD Tactical входят следующие многим известные вещи: Entity, Value Object, Repository, Factory, Specification, Domain Event, Service

    18:13

    @backendsecret я не буду очень тщательно останавливаться на каждом из них, т к информации в инете много плюс думаю кто-то уже знает про них

    18:13

    @backendsecret как и говорил есть простой способ перевести UL в код по старой традиции: существительные - entity, глаголы - service, методы

    18:14

    @backendsecret Entity не что иное как некоторая глобальная в рамках одного или нескольких BC вещь, которая характеризуется своей identity

    18:16

    @backendsecret для многих кто проектирует приложения с миграций это будет autoincrement тот же, но это не всегда верно

    18:16

    @backendsecret примеры сущностей в псевдо магазине: Order, Customer, Account, Invoice, Client, Coupon.

    18:17

    @backendsecret у сущности есть state который она и ментейнит, ничего сложного, обычно сущности создаются в Factory, но можно и без них

    18:18

    @backendsecret важно отметить что сущность может играть разные роли в разных BC: User (profile), Client (marketing), Customer (purchasing)

    18:19

    @backendsecret также другим важным аспектом является что сущности должны всегда находится в валидном состоянии, always valid

    18:19

    @backendsecret или другими словами, вы не должны поддерживать инваринат сущности, #DbC в деле en.wikipedia.org/wiki/Design_by…

    18:20

    @backendsecret ответ зачем это делать - просто потому что так проще жить, без лишних проверок, if-else и т п, только контракты

    18:20

    @backendsecret в зависимости от BC сущность в одном BC может быть Value Object в другом, например в Bounded Context marketing

    18:21

    @backendsecret есть сущность Coupon, у которой есть свое поведение, могут накладываться ограничения на купон, срок действия и т п

    18:22

    @backendsecret в то же время в BC purchasing, Coupon ни что иное как Value Object - составляющая часть aggregate root Order, Order.coupon

    18:22

    @backendsecret сущности также не появляются просто из воздуха а создаются либо из VO либо в результате действий определенных (сервисов)

    18:25

    @backendsecret собственно давно Udi Dahan про это написал, советую прочитать и попытаться вникнуть udidahan.com/2009/06/29/don…

    18:26

    @backendsecret сущности сохраняются в repository откуда забираются спеками или по identity, ничего сложного

    18:27
    When deploying your Docker container fails

    i.imgur.com/cwXHW2N.jpg pic.twitter.com/hhepoo1ung

    18:27

    что касается Value Object, то это все те же слова из UL, но они не являются сущностями, у них нет identity и меняющегося state

    18:28

    @backendsecret многим известно и понятно что VO это практически immutable DTO, что впринципе справедливо и для DDD

    18:29

    @backendsecret как упоминалось, примером VO, может служить Coupon в purchasing, или CustomerInfo в AR Customer, либо Money(10, 'Eur')

    18:30

    @backendsecret принцип работы с VO простой - заменяйте весь VO целиком и не беспокойтесь по поводу его состояния, ведь его нет =)

    18:30

    @backendsecret в зависимости от того какой persistence вы используете то может быть хорошая поддержка для VO либо нет

    18:31

    @backendsecret например в Hibernate это всякие композитные типы, или в Doctrine2 - embeddable. Для Doctrine2 через custom type тоже можно

    18:32

    @backendsecret другие примеры VO: DateTime, Address(street, city, house), Tracking(longitude, latitude) и т п

    18:42

    @backendsecret негласное правило работы в #DDD с сущностями и VO, это делать сначала все как VO если не уверены

    18:43

    @backendsecret т к поменять VO в entity гораздо проще чем бегать по коду и менять состояние и убирать методы какой-то entity

    18:43

    @backendsecret лишние поведения и состояния это всегда зло, в них можно утонуть

    18:43
    На этой неделе самый дельный @backendsecret со времён @AlexSerbul

    спасибо, самые стойкие останутся до конца наверное ) twitter.com/PetrMyazin/sta…

    18:44
    На этой неделе самый дельный @backendsecret со времён @AlexSerbul
    18:45

    поговорим о Repository, если в двух словах то это коллекция сущностей.

    18:46

    @backendsecret из Repository получают уже сохраненные сущности либо по identity либо по Specification

    18:49

    @backendsecret люди путают specification и query object изза того что не все persistence либы могут обеспечить хороший persistence ignorance

    18:50

    @backendsecret также стоит отметить что Repository сохраняет сущности только на уровне domain, без всяких flush на уровень persistence

    18:51

    @backendsecret иначе это уже Table Module какой-то или псевдо Active Record, тут поможет entity manager ну или unit of work

    18:52

    @backendsecret и то и то есть и в Hibernate и в Doctrine2, таким образом и происходит life-cycle сущностей:

    18:52
    Когда программистами управляют опытные архитекторы или инженеры - все прекрасно! Когда менеджеры в галстуках - сразу видно кто умнее :-)
    18:54

    @backendsecret также стоит отметить про плохую практику когда люди начинают клепать repository простым extends от класса вендора

    18:59

    @backendsecret таким образом в интерфейс проникают ненужные методы, которые потом как всегда кто-то будет использовать в коде

    18:59

    @backendsecret и ни про какой DbC речи конечно же уже не идет, поэтому не стоит так делать, используйте DbC правильно:

    19:00

    @backendsecret на уровне domain model нужный контракт repository - интерфейс, а реализацию скидывайте вниз в port.adapter/{vendorname}

    19:00
    @andrzejkrzywda If you name everything as "data", you really can't go wrong.
    19:01

    едем дальше по #DDD Tactical, теперь Factory, вроде уже и обсуждать почти нечего тут

    19:02

    @backendsecret простой класс, чем-то напоминающий ту самую Factory из GoF, кстати многие путают static::createNoName() и factory method )

    19:03

    @backendsecret желательно но не обязательно создавать entity внутри factory, т к это будет единственная точка входа и контроля always valid

    19:03

    @backendsecret внутри фабрики создаете сущность, проверяете спеками на уровне домена бизнес правила, стоит отметить что многие путают это

    19:04

    @backendsecret кто-то думает что проверка email на уникальность это бизнес спека, что на самом деле не так

    19:04

    @backendsecret корректным было бы привести пример где в factory при создании order из cart проверяется максимальное колво order-line / price

    19:09

    @backendsecret вот тут немного набросано с @Onotoly всяких мыслей по поводу Factory gist.github.com/Ragazzo/7e1497…

    19:10

    одна из интересных вещей в #DDD Tactical это specification, как ни странно, вроде простая вещь, но с ней иногда возникают недопомнимая

    19:12

    @backendsecret согласно #DDD есть 3 вида спецификаций:

    19:12

    @backendsecret если кто не знает то вот ссылка en.wikipedia.org/wiki/Specifica…

    19:13

    @backendsecret примеры каждой из спек можно найти много в интернете, я лучше остановлюсь на use-case когда с ними бывают проблемы

    19:15

    @backendsecret во-первых люди часто путают specification и query object, из-за того что не все persistence либы могу обрабатывать спеки

    19:17

    @backendsecret это касается спек типа 3 (на выбор из repository), ведь по факту надо проитерировать по всей коллекции и отфильтровать

    19:18

    @backendsecret из-за этого приходится добавлять в спеки разные методы вида specification.getCriteria() или что-то такое

    19:19

    @backendsecret во-вторых иногда люди пихают результат спек как boolean attribute какого-либо aggregate root, что тоже неправильно

    19:19

    @backendsecret либо совершают эти действия в каком-то методе ->isCanBeDoneWithThisAggregateRoot(), например тот же Order

    19:20

    @backendsecret можно сделать order->canBeInvoiced() в котором проверять customerInfo, или другие required вещи, но есть проблема

    19:23

    @backendsecret никто не гарантирует что метод обязательно вызовут и во вторых он никак не принадлежит сущности, это операция над ней а не ее

    19:23

    @backendsecret поэтому меняем на спеку CanOrderBeInvoicedSpecification->isSatisfiedBy(order) и живем спокойно, обойти спеку будет сложнее

    19:24

    @backendsecret к тому же с точки зрения UL лучше использовать спеки т к они и воплощают разные restrictions которые есть в domain

    19:24

    @backendsecret насколько знаю в .NHibernate в LINQ автоматически спеки переводятся в query criteria и прочие вещи, это круто

    19:25

    @backendsecret разные примеры спек тут набросал по-быстрому gist.github.com/Ragazzo/c7f07b… и полезные ссылки
    codeproject.com/Articles/67011…

    19:30
    #Hibernate 5.1 will come with a new User Guide featuring tons of examples, all being injected from unit tests. Stay tuned!

    смотрите как явистам повезло, будут разбираться не в доках а моках и стабах, просто сказка =) twitter.com/Hibernate/stat…

    19:36

    остались только Domain Event и Service, ну про Domain Event особо нечего и говорить даже, тот же самый VO только ивент ^_^

    19:40

    @backendsecret примеры domain events - UserRegistered, OrderCompleted, InvoicePaid, OrderCanceled, CouponUsed

    19:41

    @backendsecret в зависимости от того на каком этапе ваш проект - SOA или в одной папке но разделенный правильно по BC, у вас может быть

    19:41

    @backendsecret как простой pub / sub через средства языка, собственно event manager, либо pub / sub через mom вида AMQP и т п

    19:42

    @backendsecret везде есть свои плюсы и минусы конечно, при SOA там приходится бороться с deduplication ивентов

    19:42

    @backendsecret также стоит отметить что та самая eventual consistency в #DDD достигается именно с помощью ивентов

    19:43

    @backendsecret ивенты желательно кидать из уровня domain, а не application, можно через статичный фасад вида DomaiEvents::fire()

    19:43

    @backendsecret также кидать их следует ПОСЛЕ того как событие случилось а не ДО, в таком случае если ивент свалится его легко ререйзнуть

    19:44

    @backendsecret но да придется бороться с deduplication, но это легко сделать с помощью идемпотентной обработки и проверки на то был ли ивент

    19:44

    @backendsecret в системе или нет, обычный unique id вида aggregate root + event name + UUID вполне может более менее позволить фильтровать

    19:45
    @backendsecret т.е. тру все проверить все инварианты на этапе создания доменного объекта в фабрике, а не в Repository#add()?
    19:47

    Hall and Oates - Out of Touch youtu.be/s_8KR-n2fBQ

    19:55
    @backendsecret тут надо дополнить, что одна и та же вещь в одном BC может быть сущностью, а в других BC - VO
    19:57
    Чтобы поймать эксепшн, надо думать как эксепшн
    19:57

    последняя но не менее важная часть #DDD Tactical в нашем списке это Services, которые люди обычно игнорят и получают в щии

    20:02

    @backendsecret на самом деле получают громадные сущности с SRP брейками и прочие проблемы )

    20:02

    @backendsecret сервисы это все те же глаголы из UL в #DDD Strategic конкретного Bounded Context, но которые остались бесхозными )

    20:04

    @backendsecret как определить domain service:

    20:05

    @backendsecret важно отметить что services должны быть stateless, side effect free functions, т е в них не хранится состояние

    20:07

    @backendsecret также они не должны (либо подумайте дважды) изменять входящие сущности

    20:07

    @backendsecret если вспомнить что Udi Dahan говорил про сущности и что они не создаются из воздуха, то станет очевидным что

    20:08

    @backendsecret сущности создаются в сервисах в результате входных данных либо взаимодействия других сущностей, например

    20:09

    @backendsecret RegistrationService использует UserFactory чтобы создать User в profile/account Bounded Context, еще одно преимущество в том

    20:10

    @backendsecret что часто в таких случаях надо кидать Domain Event и теперь вы точно знаете где он должен быть а не по всему коду applicaiton

    20:10

    @backendsecret также стоит отметить что на сервисы как и на repository распространяется правило DbC en.wikipedia.org/wiki/Design_by…

    20:11

    @backendsecret т е оставляем на уровне домена только контракт - интерфейс все остальное в port.adapter, о нем расскажу чуть позже

    20:12

    @backendsecret другие примеры сервисов PasswordService::verify/generate, AuthenticationService

    20:13

    @backendsecret другой важный аспект заключается в том что если в вашем BC вы обрабатываете ивенты из другого BC, то это тоже надо делать

    20:13

    @backendsecret в сервисах а не просто писать event handler на уровне application

    20:13

    @backendsecret OrderCompleted - event, OrderCompletedHandlingService - domain service, который вызывается на applicaiton уровне подписчиком

    20:14

    @backendsecret некоторые примеры domain services и того как в них могут создаваться сущности, в том числе с проверками спек ниже по ссылкам

    20:15
    Не понимаю про что @backendsecret сейчас пишет столько постов, видимо что то стоящее #DDD #DDDDD #R2D2 pic.twitter.com/AkU9BZJU8n
    20:15

    @backendsecret важное замечание, не переусердствуйте с сервисами чтобы не получить anemic model - модель в которой сущности не имеют state

    20:18

    @backendsecret в которой сущности (entity) состоят только из set / get, а вообще сеттеры и геттеры это плохая практика, конечно

    20:19

    вот собственно и все что я хотел вкратце рассказать про #DDD Tactical, чтобы было понятно о чем я тут вещал без баззвордов =)

    20:26

    дальше будет только интереснее, можно будет обсудить как раз таки теперь #SOA #EDA и то как масштабировать все эти services #DDDD ;D

    20:27
    @backendsecret Нифига себе вкратце :)
    20:28

    как многие уже могли понять, что на уровне кода, что на уровне проектирования у всех в той или иной степени #DDD мог присутствовать )

    20:29
    @megaserg Valhalla entrance, a homeless guy, and a mixture used to harden wood.
    20:45
    @de_gis @backendsecret ну не рассказывайте сказки, а? :) m.habrahabr.ru/post/144686/
    20:50
    Обновил плагин Golang к PyCharm и все GOPATH слетели. pic.twitter.com/QU534MT8JQ
    20:55
    @xmbshwll Через 200 лет пришельцы посещают пустую Землю.
    21:09
    @xnopso @backendsecret тру это когда система типов не дает тебе создать неправильный инстанс, слава компиляторам :)
    21:11

    на сегодня наверное все )

    21:17

    завтра можно будет обсудить всякие интересные темы как и хотели #SOA #EDA #distrbuted , явисты и прочие матерые люди очень даже вэлком )

    21:18
    Very, very impressive result by Google's Go program.
    nature.com/news/google-ai…

    theguardian.com/technology/201…

    21:21

    # Пятница 70 твитов

    всем доброе утро, остался последний рабочий день на этой неделе, кто куда на выходных собирается? горы? клуб? диван?

    7:32
    @backendsecret диван сам себя не потопчет
    7:46
    @backendsecret в горы хочется. Вообще считаю, что лучше отдыха не существует, чем отдых на природе. Но проведу выходные на диване ;(
    7:46
    @backendsecret стол, ноутбук, диплом -_-
    7:47
    @backendsecret куда с такой погодой и эпидемией гриппа можно пойти? Только в соседнюю комнату. :(
    7:51
    @backendsecret надо бы на каток наведаться, если не растает
    7:51

    я вот тоже дома буду наверное, охранять диван )

    7:51
    @dcromster @backendsecret последний раб. день? Твои бы слова да серверам в настрйки :)
    7:56
    @backendsecret Еще три рабочих дня :-D

    #VK трудится непокладая рук или серверов =) twitter.com/AterCattus/sta…

    8:02

    кстати написание доков это тоже работа программиста, а не просто набросать код. У вас забивают на доки?

    8:05
    @backendsecret доки для слабаков а комменты в коде так вообще хипстерство какое-то!
    8:09

    кстати о доках, для каждого сервиса у нас доки на API тоже пишутся, простые конечно но usable, в виде curl команд и объяснения API response

    8:10
    @backendsecret погода супер, как минимум в лес на лыжах )
    8:54
    @backendsecret и доки, и джавадоки с контролем по чекстайлу на CI, кто фейлит план эти планы в CI тому бьют по рукам :-)

    неплохой такой процесс ) twitter.com/xnopso/status/…

    8:55
    @backendsecret у нас 5 команд на проекте, иначе хаос
    8:58
    @backendsecret сами не пишут. Если попросить то бывает два исхода “ок сделаю” и “ты чо охуел на гитхабе примеры а код самодокументируемый!”

    хорошо что хоть не говорять идти за доками в тесты ) twitter.com/crashkin/statu…

    9:12
    @backendsecret для документирования RESTful API есть такая штука- swagger.io. Получается как спек для API+кодогенерация клиента
    9:12

    сейчас читаю книгу "Release It!" , отличная книга ) amazon.com/Release-It-Pro…

    9:25

    кстати про #SOA , стоит отметить что первая версия предполагала синхронность, и только вторая стала на путь #EDA en.wikipedia.org/wiki/Service-o…

    9:30

    часто люди не понимают как разбивать систему на сервисы, но теперь с помощью #DDD вы знаете как минимум один подход, хотя их несколько

    9:34
    @_bublik_ @backendsecret я думаю основная инфа тут github.com/swagger-api/sw… ну и широкий взгляд тут swagger.io/tools/
    9:34

    как и говорил раньше, кто-то использует #BPMN для разбивания системы на сервисы #SOA en.wikipedia.org/wiki/Business_…

    9:36

    поскольку говорим про сервисы, то кроме hystrix и phystrix, кто как поддерживает fault tolerance? #SOA

    9:40
    This is so true and it hurts a bit hearing it laid out so clearly. #dddeu pic.twitter.com/KsEKrhTDZx
    11:25
    @abroadunderhood Как дела с Го? Играют в парках?
    11:27

    неплохой набор статей как вводная для тех кто хочет узнать про #microservices #SOA nginx.com/blog/introduct…

    11:33

    для тех кто спрашивал про Маркова или #BPMN вот вам чтиво, по-моему там считают криволинейные интегралы ) #SOA hindawi.com/journals/jam/2…

    11:34

    Skeeter Davis - The end of the world youtu.be/sonLd-32ns4 via @YouTube

    12:53
    @backendsecret нет, иначе меня же поддержка сожрет / сам буду поддержкой в итоге / нанимать кучу суппортов придется.
    Я жадный, так что пишу)
    14:45
    @backendsecret про документирование кода - стараюсь придерживаться отсутствия придирок линтера, а он заставляет описывать все.
    14:45

    есть тут кто живой? предлагаю продолжить разговор про #SOA и у кого он есть )

    17:06

    интересует кроме известных, кто на какие проблемы натыкался при переходе к #SOA ? у явистов наверное больше всех проблем было

    17:16

    ой все разбежались видимо, пойду закажу пиццу и буду продолжать монолог =)

    17:50
    @backendsecret а я пойду с либой для стейт-машин экспериментировать и время от времени сюда заглядывать
    18:55

    немного про #SOA , пара основных способов как делать fault tolerance

    19:36

    @backendsecret если про первый случай все понятно, то на втором можно немного остановится, чтобы можно было сделать retry, надо чтобы

    19:41

    @backendsecret ваши сервисы могли обрабатывать такие действия в идемпотентном стиле, аналогично тому как это делается с ивентами

    19:42

    @backendsecret также стоит отметить, что ваши SLA могут не позволить вам сделать retry в текущем запросе, и придется делать новый запрос

    19:43
    @backendsecret с этим работать то лень, а уж обсуждать ....

    а мне норм, очень даже весело и интересно ) twitter.com/ipronix/status…

    19:44
    @backendsecret не выливается ли SOA это удорожанием поддержки? Ведь разные сервисы, есть дублирование части кода в каждом сервисе
    19:47

    отдельная тема в #SOA это services autodiscovery, оно может быть как server side так и client side

    19:48

    @backendsecret что касается backend то проще использовать zookeeper или consul которые будут отдавать нужные адреса сервисов другим сервисам

    19:56

    @backendsecret таким образом можно будет легко избежать ситуации когда запросы попадают на упавший сервис, т к он будет исключен из SR

    19:56

    @backendsecret SR - service registry. Также с помощью consul легко мониторить состояние сервисов, впринципе можно костылять и Zabbix

    19:58

    @backendsecret преимущество consul в том что он был изначально под это заточен и там много моментов отвечающих за это, в том числе

    19:59

    @backendsecret информация о состоянии сервисов передается с помощью gossip, что позволяет быстро узнать про состояние сервиса

    20:00

    @backendsecret полезные ссылки consul.io , сайт Zookeeper думаю все смогут найти

    20:01

    в #SOA 2.0 по-умолчанию принято обмениваться ивентами, в основном это асинхронные ивенты, обычный MOM en.wikipedia.org/wiki/Message-o…

    20:04

    чтобы всех не томить долгими рассказами, сейчас покидаю полезных ссылок в том числе на #faulttolerance темы, т к почему то их мало

    20:05
    @backendsecret обосновать целесообразность перехода от монолита к SOA

    отличный вопрос кстати, вот я знаю пару способов, кто что предложит еще? twitter.com/RusAlexander/s…

    20:11

    в принципе обоснования перехода к #SOA могут быть теми же что и при переходе к #DDD )

    20:13

    пара статей от #Netflix о том как что такое circuit breaker и почему надо запросы к elementary services посылать параллельно

    20:19
    @backendsecret я всю неделю писал код как минимум по 6-8 часов в сутки, и мог пропустить. Не могли бы вы повторить ? =)

    господи, золотой вы наш человек, а я то уже давно научился на работе youtube левым глазом смотреть, а правым в #IDE twitter.com/RusAlexander/s…

    20:28
    @backendsecret вот и раскрыта тайна людей не умеющих писать код не в IDE :)

    нас раскрыли ) twitter.com/imdefined/stat…

    21:04

    на сегодня наверное все, завтра продолжим немного про #SOA и закончим темой про #EDA а в воскресенье все будут спать =)

    21:22

    кстати если тут есть пиратствующие люди, которым нужны книги по #distributed #SOA #DDD то пишите @Kukuruzovich в ЛС email, скину

    21:26
    @backendsecret классная аббревиатурная неделька👍
    21:31

    всем тем кто думает, что в программировании есть сексизм - всем пофиг на то пестик у вас или тычинка, а вот на ЧСВ не пофиг #Dev #Life

    21:35

    после смены персонажа он неплохо так выглядит =) youtu.be/HNpLuXOg7xQ youtube.com/watch?v=CgEXmF… //cc @OdinYury

    21:40
    @imdefined @backendsecret если писать в не IDE и без автодополнений то придётся учить синтаксис по полной а оно-же очень лень :))

    можно писать во всяких редакторах с плагинами, будете как в #FastFurious обвешанные спойлерами ) twitter.com/POS_troi/statu…

    22:06

    можно подводить промежуточные итоги недели, кому как понравилось? как вам "баззворды" эти? поняли их смысл? темы заинтересовали? =)

    22:07
    @backendsecret ну к примеру буду я писать в том-же VIM с пачкой плагинов, он в некоторых моментах любой IDE фору даст. :)
    22:35

    запустил там #Diablo3 на #PS4 очень круто выглядит, я все время жал X и уже стал 2 уровня ) #PressXToWin

    22:39

    # Суббота 29 твитов

    @backendsecret Ведущий хороший и темы интересные :D
    6:13

    доброе утро, сегодня хоть недолго но с вами снова буду я, всем удачных выходных и хорошего отдыха =)

    6:15
    Repeat after me: It's not about the database. It's not about the database. It's not about the database. It's about the model. Again...
    6:51
    В это сложно поверить, но если меньше болтать и больше делать - результат будет офигенный.
    6:52
    Is little know fact DDD is 1/ focus on business domain 2/ care of language 3/ think before make all big/small decision. And cargo-shipping!
    6:53
    You not able of figure out how to do DDD? Buy a tool. That ALWAYS works. Example list is here: google.com/search?q=ddd+f…
    6:55
    This year I learn to program.
    6:56
    @backendsecret темы интересные и важные, ведущий молодец!
    8:29

    снова про #DDD небольшие отступления

    18:55

    можно конечно делать по разным методологиям проектирование, но рано или поздно если Вы хотите развиваться, то придете к #DDD, вопрос времени

    18:56

    начать наверное знакомство с #SOA рекомендовал бы с этой книги packtpub.com/application-de…

    18:56

    помимо конечно книги Нюмана, которая хорошая, но капитанская )

    18:57

    ну а если кто-то хочет понять как скейлить ваши сервисы то вот вам куб =) microservices.io/articles/scale…

    18:58

    неплохая новость для любителей #Codeception , почти behat стори ) //cc @davert github.com/Codeception/Co…

    18:59

    небольшая книга по #API с важными tips / tricks =) apigee.com/about/resource…

    19:02

    вообще иногда встречаю людей которые не понимают зачем код ошибки убирать из http status в сообщение, и всегда отвечать 200

    19:02

    @backendsecret не про REST-любителей конечно разговор

    19:03
    @backendsecret платежные системы иногда так просят делать - всегда отвечть 200 и в body на русском писать ошибку
    19:05

    много полезных книг по #SOA есть от Thomas Erl

    19:06

    если кому-то надо книги по #DDD в электронном варианте, то тоже стучитесь в ЛС, перегоните потом pdf в epub например =)

    19:08

    если кто не знал что скейлить #Redis можно и без cluster нормально =) github.com/twitter/twempr…

    19:10
    для тех кто хочет все таки начать разбираться с #DDD вот вам книги, вчера отвечал на этот вопрос ) twitter.com/backendsecret/…

    а также ссыла на литературу, в нужном порядке, которую можно почитать по #DDD twitter.com/backendsecret/…

    19:11

    к сожалению книг по #EDA #CEP хороших днем с огнем не сыщешь, но хоть что-то есть =) amazon.com/gp/product/032…

    19:13

    а в общем и целом, хотелось бы заметить, что настоящие интересные вещи это в #AAA gaming development, там очень круто =)

    19:15

    если вдруг кто-то не знал про faker ) github.com/fzaninotto/Fak…

    19:19

    на это вечер предлагаю тему #AWS и аналоги, кто использовал какие нарекания?

    19:22

    из разговоров с людьми, что использовали, все говорят, что #SLA не такие как заявлено, особенно затыки в сетях

    19:23
    @backendsecret @meowthsli негодую, когда вместо 4xx или 5xx отвечают 200.
    20:07

    на сегодня наверное все )

    20:15

    # Воскресенье 6 твитов

    @backendsecret есть еще #roshi - github.com/soundcloud/ros… - слой который crdt поверх redis натягивает
    10:55
    Читал хороший совет что в публичном апи, хорошо кидать ошибки иногда просто так, чтобы разрабы не забыли обработать twitter.com/backendsecret/…
    10:57
    @gvsmirnov @backendsecret @meowthsli А мне норм, по мне если сервер жив - надо отвечать 200 со статусом/причиной.
    10:57
    @backendsecret если речь про амазон, то нареканий особых нет: все предсказуемо и работает + есть бесплатные серваки для pet-projects
    10:59

    на этой неделе наверное все, спасибо всем кто слушал, задавал запросы, фавал ) youtube.com/watch?v=qnVD7W…

    14:01

    по поводу mercurial ) mercurial-scm.org/wiki/mpm/trans…

    14:02

    www.youtube.com

    www.amazon.com

    github.com

    en.wikipedia.org

    music.yandex.ru

    gist.github.com

    youtu.be

    other


    @retran