# Понедельник 11 твитов
всем привет, эту неделю ведет @Kukuruzovich , стыдно признаться, что php программист, но у каждого свои недостатки. pic.twitter.com/EyflTPEZLk
23:14тут 2000 фолловеров, можем поговорить о #DDD #SOA #EDA #DDDD а еще интересно если тут появятся специалисты по distributed системам.
23:15итак, кто тут в проектах использует DDD? только такой тру DDD со всяким Strategic, а не пара паттернов из Tactical?
23:19кто что думает по поводу хайпа насчет микросервисов? я вот думаю, что отсутствие нужного софта в языках и лень породило микросервисы =)
23:20кстати книга Ньюмана про микросервисы ни что иное как DDDD расписанная для тех кто ниасилил DDD, норм набрасываю да? =)
23:22кстати если тут уж есть те кто используют DDD, может вы еще для Domain Model persistence используете Event Sourcing? как живется?
23:49кстати про SOA, еще один пример софта, у явистов есть Hystrix, в php хоть Phystrix есть спасибо #Odesk
23:51кстати, многие ли любят fail fast? я просто ленивый и если что идет не по контрактам то кидаю exception и ухожу, кто делает также?
23:53если тут есть игроделы всякие сишарперы, вот вам отличная вещь про которую вы конечно знаете наверное github.com/dotnet/orleans
23:56# Вторник 312 твитов
@backendsecret я за referential transparency везде где можно0:00
многие кстати все никак не могут принять способ deduplication events и идемпотентной обработки и начинают костылять какие костыли видели вы?
0:12сейчас накидаю сюда ссылок для CQRS / ES php если вдруг кто-то решит рискнуть, явисты могут кстати поревьюить, мало ли =)
0:14вот кстати github.com/odesk/phystrix если кому надо, чтобы fault tolerance был толерантным
0:16@backendsecret там еще дашборд есть который цеплятеся к hystrix дашборду =)
0:17для php программистов они тут хоть есть?
github.com/qandidate-labs… github.com/szjani/predaddy github.com/SmartGecko/Gov… github.com/beberlei/litec…
судя по всему многие либо спят либо забили на DDD, а я хотел явистов помучать или всяких шарперов с их софтом =)
0:26@backendsecret я с ddd поигрался, в итоге не согласен с подходом в принципе. для анализа и дизайна нужны разные артефакты.0:32
так вот костыли с ивентами:
- персистить вместе с entity
- мониторить лог базы или другой лог
как по мне проще забить и принять реальность
0:34@strangeqargo когда что-то делают, чтобы утереть нос или "исправить", выходит хуйня типа EntityFramework @backendsecret0:35
@backendsecret в итоге микросервисы, функциональная декомпозиция + некоторые идеи из FDDD0:38
кстати я вот думаю что BDD user story которые по факту не что иное как UL из DDD, записанные на том же gherkin это тру, но лень )
0:40@backendsecret .. Теперь - бинго - 7ая версия переписывается с нуля, будет как в relinq, но своё, другое @strangeqargo0:47
раньше когда-то я коммитил на #github и регулярно устраивал срачи в #Yii repo, может кто-то меня вспомнит, хотя лучше не надо конечно
0:51@backendsecret я психанул между 4ой и 5ой версией и ушёл в java, и не пожалел ни разу с тех пор @strangeqargo
вот сразу видно человек образумился, стоит возрадоваться за него, ведь #java это светлое доброе вечное =) twitter.com/meowthsli/stat…
0:53кстати видел что многие начинают виснуть когда AR может персистится отдельно от каких-то VO связанных с ним, у людей рвет шаблоны #DDD
0:54в последнее время все больше принимаю сторону использования UUID для identity, т к сразу always valid и все дела, и хороший PI получаем =)
0:55@backendsecret оракл, к счастью или сожалению, стоит своих денег. Самая быстрая и предсказуемая БД @strangeqargo0:58
@backendsecret мля, это те кто пилит третьи норамальные формы для nosql?1:03
можно еще поговорить про #EDA, например у нас #EDA везде где только можно с колоссальным message rate 150 m/s, есть даже #CEP ;D
1:06оставлю тут трек что-ли, а то все текст и текст ) youtube.com/watch?v=2PCdGw…
1:08не знаю как люди живут в Москве или Питере, серые города, злые люди, вечно все куда-то спешат и никакого воздуха чистого, кто что думает?
1:11кстати те 3 - 4 человека, которые подписались на мой акк, он не "технический" полистайте чуть подальше, чтобы знать на что подписались ;D
1:17@Soukhinov ты говорить правда человек я согласиться с ты@ivanenok @backendsecret1:17
на сегодня наверное все, т к у меня тут 1:30 и море под боком, надеюсь хоть кто-то завтра появится из явистов, дотнетеров про SOA EDA DDD )
1:22ой, кстати чуть не забыл, есть ведь #AOP , явисты то точно про него знают, если в php кому надо то это к @lisachenko github.com/goaop/framework
1:24Creating a native #ios, #android and #wpmobile app using #php - that's an interesting challenge! twitter.com/amahomet/statu…
для любителей извращений на php twitter.com/GabiUdrescu/st…
1:30@backendsecret А разве в Питере злые? Мне всегда друзья говорили, что в Питере намного добрее, нежели в Москве1:35
@backendsecret ну хз, в Москве хорошие люди, красиво, воздух чище, чем в Омске, парков и прочих общественных мест больше1:35
@backendsecret @kotchuprik из Омска невозможно сбежать, в моём сердце он навеки!1:37
кстати раз уж тут фронтэндеры затесались в рядах backend , то скажу что у нас #DDD даже на frontend есть , серьезно , ResortFactory.js и т п
1:37в качестве чтива могу посоветовать аккаунты @microservicely и @adriancolyer которые делают подборки , других наверное вы и так знаете
1:39ну или вот еще @caitie @seancribbs @rystsov @DZone остальных сами найдете по кросс ссылкам , всяких афиров и прочих =)
1:43кстати если кто не знал то по #distributed можно @sum3rman доставать аккуратно, очень вежливый и симпатичный кун ^_^
1:44конечно кто не знал @gvsmirnov @spyced @gregyoung то они тоже очень умные вещи пишут там у себя, про фаулеров, эвансов и прочих не говорю
1:46если кто-то упоролся по machine learning и прочему, хотя я только сеть Хопфилда делал , то вам в помощь @rasbt с его книгами
1:49ну и поскольку тут много гоферов , хотя я конечно их люто ненавижу , just cause , то вам в помощь @TvorZasp он сейчас в Питере вроде )
1:52старый дедан, которого я конечно не знаю и зафолловил из-за его авы такой дружелюбной @ted_dunning , кто узнает кто он напишите мне )
1:59@backendsecret @ted_dunning srsly? да это же сам старина Тед! oreilly.com/pub/au/5873 mapr.com/blog/author/te…2:05
кому интересно потом дам ссылку на трансгендера который к тому же еще и феминист а еще устроил срач на #github кого только не встретишь ;D
2:07старый дедан?!?2:08
Hardly!
@grim_juz @backendsecret
@backendsecret ты про нее? :)2:10
github.com/CoralineAda/
@backendsecret у нее 2 показательных срача:2:13
@backendsecret сейчас рельса очень не плохо развивается + появляются другие интересные фреймворки (hanamirb.org)2:14
Just joined @tumblr from space! #Blizzard2016 inspired 1st post: Chasing Storms tmblr.co/ZmuJBi20aFgEL #YearInSpace pic.twitter.com/kPEAfs07IW
напоследок вот вам статус какого-то астронавта который сейчас вроде болтается на МКС twitter.com/StationCDRKell…
2:20я вернулся, добрался до работы, нынче в Сиэтле снежно очень ;D pic.twitter.com/n1fUIMqOFp
10:37тут 33 mentions, а вроде все спали
10:37@__pewpew__ просто надо покупать платную поддержку или партнёриться. А баги есть у всех @backendsecret @strangeqargo10:41
@backendsecret сервер+поддержка И ЕСТЬ ПРОДУКТ, а не то, что вы там себе вообразили под продуктом @__pewpew__ @strangeqargo10:45
так ни у кого и не появилось каких-то вопросов по #DDD #EDA #DDDD ? интересные темы ведь или мне прост пересказывать так по 140 символов? =)
10:47кто как работает? я вот сижу в наушниках и слушаю на полную громкость музыку чтобы не отвлекал всякий шум? многие любят тишину и почему?
10:52показательно как упали акции #Twitter, вроде год назад все было хорошо а сейчас по 17 долларов
10:55@backendsecret в тишине легче сосредоточиться.... Особенно если пытаешься понять почему алгоритм работает не так как планировалось10:56
@backendsecret В Питере атмосфера творческая.10:58
кто-то уже конечно использует, но если кто не знал и любит спокойную музыку, вот вам плацкарты от РЖД ) noisli.com
11:00@backendsecret епрст! ты в паблик подался ? Смотрю ава твоя а речь то нет! Ни тебе прона, ни про Путина!11:00
@backendsecret сечас Flow хочет профилироваться по #DDD я слышал. Интересная дискуссия: discuss.neos.io/t/product-visi…11:02
в целом многие разработчики, которые не хотят стоять на месте и работают над сложными проектами, приходят к #DDD так или иначе
11:04сейчас вот слушаю альбом #Tron music.yandex.ru/album/219772 #DaftPunk
11:06@dimaip @backendsecret DDD-framework - это утопия. уж очень приложение от первого D зависит :) разве-что базовые шаблоны tactic'a11:08
@anton_davydov читал в таком порядке:
infoq.com/minibooks/doma…
amazon.com/Applying-Domai…
amazon.com/NET-Domain-Dri…
amazon.com/Implementing-D…
для тех кто хочет все таки начать разбираться с #DDD вот вам книги, вчера отвечал на этот вопрос ) twitter.com/backendsecret/…
11:11одна из главных вещей в #DDD еще это не забывать про Strategic, т к без нормального разделения Domain по BC особо далеко не уплывешь
11:12а еще я иногда люблю залипать под 10 часовые версии на работе например youtube.com/watch?v=sJOD7B… youtube.com/watch?v=ov5pxa…
11:15пинк флаффу юникорнс дэнсинг он рэйнбоус ;D
11:17@Onotoly они тут так дискутируют, что только вакуум способен заглушить их :( @backendsecret
мы то с вами знаем по всяким сериалам про космос и #StarWars что звук то там есть, зачастую Dolby Digital =) twitter.com/dcromster/stat…
11:22@dcromster @backendsecret тишина не всегда достижима, особенно в офисах.в таких случаях музыка намного лучше, чем внезапная дискуссия коллег11:22
опять же про #DDD, единственный творческий момент тут это только на Strategic, когда дело подходит к Tactical то там все правила расписаны )
11:27For those who likes #ddd, #php and some discussion there is dddinphp.org /cc @backendsecret11:29
В @backendsecret говорят про какой-то DDD и DDDD. Что это вообще за хуйня?11:31
@freiksenet_ru @backendsecret не обращай внимания, бро, продолжай натягивать темы на #WP :D11:35
самая наверное крутая вещь в #DDD то что он действительно с помощью UL позволяет сблизить бизнесс и разработчиков, устранить недопонимание
11:37@backendsecret в наушниках слушаю на somafm DEFCON radio somafm.com/defcon/
как-будто в 90е вернулся ) twitter.com/chubik/status/…
11:38наверное стоит сделать краткий экскурс что-ли про #DDD, все просто - делится на две части Strategic / Tactical, обе важны конечно
11:39так вот весь "моделлинг" по факту и находится в Strategic части, в которую входят: UL, BC, Domain parts, Context Maps, BC communication type
11:46в Tactical входят всем известные паттерны: Factory, Repository, Service, Entity, Value Object, Event. Эта часть тупо кодинг и все )
11:50например что такое Domain? вроде понятно предметная область? а более конкретно мало кто понимает что с ней делать, с чего начать?
11:51обычно domain еще называют problem space - совокупность всех вопросов / проблем которые надо решить чтобы сделать продукт
11:53проще наверное на примере рассмотреть, поэтому за пример возьмем какой-нибудь классический ecommerce магазин, который все писали но не я
11:54@backendsecret можно выкинуть Tactical (кодить как попало), из Strategic взять только деление на ВС, оформить BC сервисами и будет #SOA :)11:56
domain (problem space) магазина:
11:57domain (problem space) магазина:
вот в кратце что есть domain (problem space) для noname online магазина =) twitter.com/backendsecret/…
12:02в #DDD как и в любой другой вещи нужно помнить что программист ничего не придумывает, а лишь автоматизирует бизнес, многие забывают про это
12:03@backendsecret а когда появляется потребность в масштабировании что со всем этим хозяйством делать?
оно легко разбивается на много сервисов и масштабировать можете сколько угодно, и как угодно twitter.com/blideddd/statu…
12:05@backendsecret Предпочитаю тишину. Если её нет, использую noiz.io. Музыка очень отвлекает.12:07
также важно помнить что Domain всегда разделим, есть более важные "вопросы" (части домена) есть наименее приоритетные, разделяй @ властвуй
12:09core subdomain - это та часть которая является наиболее критичной для бизнеса, без которой по факту его не будет
12:19@backendsecret очевидно что для интернет магазина core это та часть что отвечает за продажи, впрочем как и для многих других продажников )
12:20@backendsecret этой частью должны заниматься только те кто уже имеет большой опыт в DDD т к промахнуться тут означает сфейлить проект часто
12:21@backendsecret а в php часто используют DDD? Мне казалось, DDD для больших сложных доменных моделей. Где тут php?12:25
supporting subdomain - та часть в которой есть бизнес проблемы, но он не критичны для бизнеса в целом, не являются его ключевой частью
12:26@backendsecret для интернет магазина это те domain part которые связаны с вопросами 1,4,5,6,7.
12:28@backendsecret данными domain part могут занятся те кто более-менее понимает что такое DDD
12:29@backendsecret можно даже часть заутсорсить но будут проблемы с налаживанием коммуникаций и пониманием бизнеса т к аутсорс это такоэ )
12:29general subdomain - та чать в которой нет бизнеса, и она просто нужна для неосновных функций проекта, эту часть можно купить или аутсорснуть
12:36@backendsecret например аутсорснуть можно ту часть что отвечает за customers и их регистрацию либо та часть что часто реализуется в виде CRM
12:37@backendsecret данной domain part могут заниматься практически все программисты не важно насколько они DDD pro )
12:37cohesive mechanism - странная фигня которая иногда есть в домене, но она не представляет какой-то бизнес, часто это некие алгоритмы просто
12:38@backendsecret под алгоритмами подразумеваю разные выборки / срезы / etc, для многих это будет знакомо как Analytics / Reporting / Statistic
12:39@backendsecret если кто-то работает в банковской сфере, то в зависимости от того как повернуть домен это может быть и supproting и даже core
12:39разобрались что такое Domain, что он разделим и как, что есть более важные части и менее, осталось выяснить когад кодить уже можно будет?
12:41cohesive mechanism - странная фигня которая иногда есть в домене, но она не представляет какой-то бизнес, часто это некие алгоритмы просто
@backendsecret
twitter.com/backendsecret/…
twitter.com/backendsecret/…
twitter.com/backendsecret/…
twitter.com/backendsecret/…
там кто-то хоть слушает или у меня монолог перед 2k мертвых душ? ;D
12:42Billy Talent — Devil On My Shoulder #nowplaying music.yandex.ru/album/2291897/…
12:43собственно следующая часть DDD Strategic это UL (ubiquitous language) ну или common language, язык на котором разговаривает бизнес и dev
12:58@backendsecret это просто набор определенных слов / терминов, которые являются общими для бизнеса и дев, это не UML (!) ни диаграммы
12:59@backendsecret те кто знают BDD user story прекрасно понимают о чем я говорю, важно чтобы это был не язык бизнеса и не язык dev общий
13:00@backendsecret в качестве участников тут это domain experts со стороны бизнеса и разработчики со стороны dev
13:05@backendsecret когда-то давно я капитанил по поводу DDD в том числе если кому интересно вот gist, кикну его потом gist.github.com/Ragazzo/830cc1…
13:07кстати как один из примеров того что не стоит слушать бизнес постоянно вот: надо было сделать функциональность отвечающую за партнеров и т п
13:08@backendsecret с первого захода domain experts сказали что есть франчайзинговые офисы и обычные партнерские, вроде все просто
13:08@backendsecret и можно было бы сделать 2 класса FranchisingOffice / PartnerOffice, но оказалось что тип офиса определятеся не просто так
13:09@backendsecret а конкретным контрактом который заключается, таким образом если бесприкословно верить бизнесу то можно получить misalignment
13:09кому сложно крафтить UL можно применять простой способ - выделять сущности и глаголы которые на уровне Tactical уйдут в Entity / Services
13:10@backendsecret самое главное внимательно слушать и задавать вопросы, а не просто принимать все на веру =)
13:11вообще BDD конечно крутая вещь, и очень нужная для DDD, т к я считаю что DDD + BDD это самое то лекарство, почти silver bullet )
13:12@backendsecret но использовать BDD без DDD особо смысла не вижу, т к терятется общая картина того что нужно сделать
13:13пока что перерыв на обед, потом расскажу что такое Bounded Context, Context Maps и как-то связано с предыдущими темами - Domain, UL =)
13:20DDD: Don’t Create Aggregate Roots13:23
#Twitter's downtime last week caused a market value loss of 700 million dollar dzone.com/articles/somet… via @DZone13:28
Hurt — Omission #nowplaying music.yandex.ru/album/435890/t…
13:38The Beach Boys — California Dreamin' #nowplaying music.yandex.ru/album/30903/tr…
14:55@backendsecret а что #DDD закончилось ? А TDD как тесно связано с #DDD ?
niet, просто надо поработать ведь тоже ) думаю прервусь до 18:00 twitter.com/RusAlexander/s…
15:03после 18:00 обсудим оставшуюся часть #DDD Strategic на примере интернет магазина, будут рисунки наверное если я не поленюсь )
15:11For differentiate your company in market, is just need of apply this magic technique that always work and is use by all competitor!15:45
тут спрашивали про то как связаны TDD, BDD, DDD если вкратце то формула какая-то такая DDD(BDD(TDD(unit-tests))), притом что TDD громаден
15:47@de_gis @backendsecret нельзя ли тут упомянуть что #DDD и рефакторинг неразделимы. А рефакторинг без #TDD - боль а то и утопия15:47
@RusAlexander @backendsecret а тестирование - это не исключительно ТДД,могут быть варианты
конечно, тестирование user story через тот же cucumber / behat - проверка бизнес спек тоже тестирование twitter.com/de_gis/status/…
15:49Is good example of Ubiquitous Language of biology pic.twitter.com/TXYfAhxZCx15:49
.@DDD_Borat Is example of why we need bounded context.15:49
@backendsecret I've just asked @mpraglowski for help and he's cooking a nice blogpost about this problem - today/tomorrow16:02
коверкай слова @ кровь из ушей вызывай, вообще раньше не любил слово entity ибо entitty и т п ;D //cc @davert 5minphp.ru/episode11
16:08кстати для php программистов есть еще@5minphp там успели засветится разные люди из ru community =)
16:10@backendsecret в тему #DDD порекомендую специальный выпуск подкаста "Пятиминутка PHP" о Domain Driven Design: 5minphp.ru/episode11/16:15
@backendsecret @5minphp а порекомендуйте малоизвестные (недавно начавшиеся), но интересные ru подкасты такого же формата, касаемые IT-сферы.16:23
тут кстати никто не играет в #Destiny #NeedForSpeed #GTAVOnline ? можно было бы вместе побегать ^_^
16:39@unix_tips @backendsecret @5minphp rcmp.me - малоизвестный ru подкаст :) об IT, хотя часто обсуждаем и другие темы :)17:46
@unix_tips @backendsecret @5minphp #razborpoletov must have для java разработчиков.17:46
рабочий день заканчивается =)
17:55вот и новый день прошел, завтра будет день опять
17:55пока буду идти домой, может кто-то из пуфонистов ответит как они делают DbC без интерфейсов то? или не могут в en.wikipedia.org/wiki/Design_by… ?
18:00@unix_tips @backendsecret Несколько избранных выпусков. rcmp.me/?p=1672 | rcmp.me/?p=2000 | rcmp.me/?p=65418:01
@backendsecret для беженцев с джавы у нас всегда есть zope.interface docs.zope.org/zope.interface но в целом: только duck typing, только хардкор!19:03
если кому было интересно про Domain и domain parts, то вот есть старое summary мое капитанское =) gist.github.com/Ragazzo/27a02a…
19:13@iamstarkov @backendsecret @freiksenet_ru итак #DDD это превращение бизнес логики в код без лишних деталей.19:21
@iamstarkov @backendsecret @freiksenet_ru и да #DDD это ЯП-агностик подход.19:24
по поводу #Java и того что у этих умных дядек весь сфот то готовый (!) если кому надо для #EDA #CEP github.com/pulsarIO/realt…
19:25Power of "event-driven, non-blocking I/O"? twitter.com/gavinjoyce/sta…19:28
через пару минут продолжим штурмовать #DDD Strategic на примере самописного псевдо магазина =)
19:31@RusAlexander @backendsecret @freiksenet_ru в каком языке он появился? есть реализации/туториалы на js?
с учетом того что #BDD на javascript давно есть то где - то и #DDD завалялся наверное , никто не видел? twitter.com/iamstarkov/sta…
19:35как по мне то если программирование не приносит фана (или очень много денег) то вы делаете что-то не так или не те тулзы. что думаете?
19:36@RusAlexander @backendsecret @freiksenet_ru это как-то относится к dsl?
тут ребята тоже выясняют что такое #DDD twitter.com/iamstarkov/sta…
19:40Taylor Dayne — Tell It to My Heart #nowplaying music.yandex.ru/album/65007/tr…
19:42ok, значит выяснили что такое domain / domain parts, выяснили что такое UL и для чего он нужен, но пока что ничего особо не сходится
19:48@backendsecret есть вопросы (domain) и есть слова (ul), как найти решение? в DDD Strategic в качестве решения выступает Bounded Context
19:48@backendsecret если domain / domain parts это problem space, то bounded context это solution space. в принципе название говорит само за себя
19:49@backendsecret bounded context - смысловая граница в рамках, которой слова из UL имеют только одно четкое определенное значение
19:50@backendsecret например, у многих в e-commerce в том же магазине есть User где-только можно или Order. Ниже приведу примеры
19:53@backendsecret допустим есть разные domain parts: profile management, purchasing part, payment part, auth / permissons part
19:54@backendsecret несмотря на то что это разные части domain, зачастую люди любят везде создавать некоего User, class User во всех domain part
19:55@backendsecret ведь согласно UL вроде везде есть "пользователь", только дело в том что роль этого пользователя бывает разной, а именно
19:56@backendsecret в profile management (User, Profile), purchasing (Customer), payment (Payer), auth / permissions part (Role)
19:58@backendsecret именно благодаря bounded context и тому что мы знаем что в каждом случае значит то или иное слово мы избегаем misalignment
19:59@backendsecret другой простой пример это Account (profile part) и Account (banking part), в зависимости от того или иного BC смысл меняется
19:59обычно в проектах много BC как и Domain Parts. Подробнее о Bounded Contexts тоже есть в давнишней капитанской статье gist.github.com/Ragazzo/f373ad…
20:01один из способов как определить domain parts / bounded contexts - смотрите какие есть отделы / departments у бизнеса и алигните по ним
20:04@backendsecret главное конечно не перестараться, но в целом иногда бывает норм Marketing BC -> Marketing Dep, Inventory BC -> Stock dep
20:05вообще одно из buzzword это Domain Model, ключевая вещь в DDD конечно, вот что Фаулер пишет martinfowler.com/eaaCatalog/dom…
20:07как уже кто-то понял хотя вряд-ли, domain parts / bounded context похожи немного, по факту BC намапленный на domain part и есть Domain Model
20:09т е есть проблема (domain part) как организовать работу со stock / складом товаров, откуда брать, какие вообще есть виды товаров, атрибуты
20:09@backendsecret есть bounded context который обычно именуют Inventory, который содержит слова из UL, которые помогают ответить на эти вопросы
20:10@backendsecret и когда Inventory Bounded Context маппится на эту domain part и получается Domain Model - конкретная реализация
20:11важно понимать что BC + DP = DM, и что Domain != Domain Model, разные команды могут построить по разному Domain Model на одной domain part
20:12в целом DDD Strategic не такая простая вещь как Tactical где тупо одни паттерны ;D
20:13таким образом в мифическом e-commerce магазине есть BC: inventory, purchasing, payment, shipping, account (profile), accounting
20:17из классических примеров того что забыли про UL, является Order::STATUS_PAID, т к оплачивается Invoice а не Order, много таких моментов есть
20:18все наверное уснули, или кто-то живой остался?
20:22@backendsecret я сижу на унитазе, читаю тебя. Продолжай.
признание уже близко twitter.com/stas_spiridono…
20:26как могли заметить конечно DDD Strategic довольно скучная хрень без особых кодинговых вещей, на то оно и проектирование, но без него никуда
20:27видел как люди сходу использовали DDD Tactical, у них ничего не получалось т к не знали как правильно разделить domain и говорили что DDD фу
20:28те кто знают SOA наверное уже догадались что можно раскидать тупо Bounded Contexts per SOA и жить себе спокойно, DDDD все дела
20:30@backendsecret первый раз набежал и сделал так же:) Теперь хочу разобраться поглубже и вникнуть в strategic.20:31
собственно про то что я писал в начале - DDDD, ни что иное как тупо BC на SOA, куда уж проще
20:37но стоит отметить что у нас не все сервисы это BC, есть всякие элементарные / атомарные сервисы - Geo, Mailing, Forecasting
20:37вот обсудили Domain (domain parts), UL, Bounded Context, остались еще Context Maps и способы взаимодействия между BC
20:41на Context Maps как раз и рисуют Bounded Context и способы их взаимодействия, рисовать мне немного лень, или есть online тулза удобная?
20:41стоит отметить что если у вас в компании много DDD pro которые и так понимают как BC взаимодействуют то вам конечно и рисовать не надо
20:42не стоит возводить рисование всяких Context Maps или UML или чего-то другого в ранг какого - то ритуала, если не надо - то нафиг )
20:42@unix_tips @backendsecret из свежих ru подкастов (стартовавших в 2015): @GolangShow и видеовстречи @clojure_ru webmeetups.net/mgroups/2520:52
@backendsecret все просто:20:52
Two Ton Boa - Time to Say Goodnight youtu.be/23XqlPb6Iq8 via @YouTube
20:52@unix_tips @backendsecret @5minphp вот ещё моя подборка заинтересовавших меня подкастов - ru и en. raindrop.io/collection/876… вдруг пригодится20:54
Junior Dev expect miracle from new frameworks. Senior Dev expect miracle from DDD. Real miracle is when they discover they have own brain.20:58
You always start new project with DB schema? Perhaps you is interested of this fantastic innovation for play music! pic.twitter.com/YsMlPPt1wP20:59
OH: We have nice team of coders strong in technologies, but we need DDD Consultant for do the thinking21:00
Is Example of Behaviorism:21:03
Given conditioning is done
When you hear "Behavior-driven"
Then you call out "Behaviorism is bad! BDD is bad!"
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.21:03
@DDD_Borat and we should introduce context independent words for higher abstractions, such as set, get, update, create and delete.21:04
For improve our Ubiquitous Language, from now on we will say "Shopping Cart" instead of "Purchase", and "Purchase" instead of "Order"21:04
@DDD_Borat so i learned a repostiory, identity map, unit of work pattern, is #DDD pro now21:10
Subtitle of DDD is should be "Tackling the Stupid Need for Complexity in the Heart of Developers"21: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)21:11
DDD is easy: just need of study all @martinfowler, @rebeccawb and @KentBeck book before for well prepare.21: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?21:12
DDD is not for junior developer. You is need of suffer enough years for understand you need DDD.21:12
I like work on domain model with DDD. Is like sexy time of project. Is very nice!21: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.21:15
"DDD in practice is 1% domain analysis, 99% wonder if do DDD well."21:16
Is proof Composite pattern is exist in holy DDD domain of cargo shipping: pic.twitter.com/UnND2RsVVM via @usmanm21:17
"DDD Quickly" ebook is good for know quickly you need lot of time for learn DDD.21:19
Is not fair: noble Entity is born with identity, but modest Entity is born like Value, is have no identity before marry a database21:19
In upstream-downstream relationship of Context Mapping, there is type of relationship Masochist or Sadist?21: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 too21:20
OH: "DDD: Invented by Eric Evans. Explained by others."21:21
ладно, вернемся обратно )
21:23как многие в принципе догадались когда проект нормально разбит по DDD, то его очень легко контролировать - каждой тиме по BC и все
21:23@backendsecret конечно могут всплыть проблемы с коммуникациями между командами, но если оговорено как BC между собой взаимодействуют то
21:24@backendsecret проблем особых не должно быть
21:24прежде чем перечислять и разобраться как взаимодействуют между собой BC, нужно определится с upstream / downstream
21:27контексты могут находится в взаимоотношении upstream / downstream, когда success одного зависит от upstream
21:28@backendsecret например BC A нужна некоторая функциональность от BC B, которой еще нет, BC B в данном случае upstream а BC A downstream
21:29@backendsecret успех BC B не зависит от BC A, и наоборот, т е BC B может сделать это и двигаться дальше, а BC A on hold пока BC B не сделает
21:30какие способы взаимодействия между BC есть:
21:32@backendsecret есть пара других, но это основные )
21:33в #NeedForSpeed тоже неплохие треки, а вот из #Destiny youtube.com/watch?v=93bjEF…
21:36ACL (AntiCorruption Layer) - используется когда надо отгородить один "кривой" BC или код от другого, часто при Big Ball of Mud (Legacy)
21:38@backendsecret многим ACL также может быть знаком по разным интеграциям со сторонними системами через API, это тоже яркий пример
21:39@backendsecret в чем суть? в том что взаимодействие со сторонним BC происходит через определенный слой который защищает ваш BC от
21:40@backendsecret кривого зачастую и неподдерживаемого кода стороннего BC, либо когда модель ваша не совпадает со сторонней как в случае API
21:41@backendsecret рассмотрим пример с API
21:41@backendsecret есть какой-нибудь сервис поиска отелей (аггрегатор), вам надо с ним интегрироваться, с вашей стороны Inventory BC
21:42@backendsecret очевидно что скорее всего у вас в Inventory domain model другая модель чем у них поэтому чтобы убрать этот Impedance Mismatch
21:42@backendsecret применяют ACL, в который входят трансляторы из вашего BC в их и обратно
21:43@backendsecret т е при получении информации об отеле из стороннего сервиса вы транслируете свой отель в их и обратно, т е T -> A / S -> T
21:44@backendsecret T - translator, A / S - adapter или service который работает в терминах их domain model.
21:44@backendsecret как-то так gist.github.com/Ragazzo/815d6f…
21:47стоит отметить что в коде на если говорить про всякий port/adapter нет никаких папок AntiCorruption, оно все спрятано за конкретным adapter
21:48@backendsecret на уровне Domain Model только контракты
21:49OHS + PL - просто API и все, ярким примером PL (published language) является кстати SOAP, когда часть UL шэрится наружу другим
21:50OHS + PL / ACL часто идут парно, т е один сервис как понятно предоставляет API (OHS + PL) а другой лепит со своей стороны ACL трансляцию
21:50можно сделать и ACL / ACL если у вас только между собой два сервиса взаимодействуют, но когда с одним сервисом взаимодействуют много
21:51@backendsecret то поддерживать 100500 ACL со своей стороны BC становится сложно, и делают OHS + PL для всех downstream
21:52мля , пропустил 9000 твит, its over9000 youtube.com/watch?v=SiMHTK…
21:53Customer / Supplier, это классика upstream / downstream, один BC заказывает нужную функциональность у другого BC
21:55@backendsecret customer тут downstream, но он имеет полный контроль над процессом в плане управления, может отменить свои требования
21:55@backendsecret таким образом upstream Supplier не нужно будет что-то делать
21:55@backendsecret зачастую пример customer / supplier это разные BC которые обмениваются Domain Events
21:56Shared Kernel - два BC делят общий код, конечно это плохо, но иногда так бывает, отсюда появляется куча дублирования, god object, etc
21:57Conformist - upstream BC и их команда знатные мудаки, которые не хотят помогать downstream, в итоге downstream просто мирится со всем
21:57@backendsecret и вместо переделывания каждый раз например того же ACL, downstream просто принимает модель без изменений от другого BC
21:58Separated Ways - проекты мало что общего на данный момент имеют, и их проще разделить на два независимых чем пытаться интегрировать
21:59есть еще Partnership конечно для любителей лапше кода и лапше функциональностей - оба BC разрабатываются одновременно, а также
22:02@backendsecret совместные фичи выливаются вместе в определенный срок, понятно что это плохой тип взаимодействия и приводит тупо к deadlock
22:02собственно это и весь DDD Strategic базовый, для особо интересующихся есть Strategic углубленный Segregated Core / Highlited core
22:06@backendsecret в принципе ничего сложного, но лучше туда забегать во второй или третий раз, чтобы мозги не вскипели
22:07вот в целом такой DDD Strategic базовый и есть, легко его пропустить или не заметить и получить совсем не тот результат который хочешь
22:09если подытожить про наш мифический e-commerce online магазин и что мы получили:
22:12не знаю стоит ли подробно рассказывать про DDD Tactical т к там ничего особенного нет, просто набор паттернов и правил
22:17@backendsecret может у кого-то есть вопросы вида Entity vs VO, Impedance Mismatch problems, Persisntece Ignorance for the win?
22:18вообще куда потерялись все явисты , дотнетеры из 2k или никто не использует там у вас #DDD ? что маловероятно конечно )
22:19making a Ruby class private by using 'private_constant' pic.twitter.com/2mNhDEMkRL22:23
Bloodhound Gang Screwing You On The Beach At Night youtu.be/uTeSkg-YIWI via @YouTube
22:30хотя есть пара нетривиальных тем в DDD Tactical, думаю можно будет это обсудить позже сегодня или завтра =)
22:31отвлечемся от #DDD #SOA #DDDD , всякого программирования и прочего, кто как отдыхает на выходных?
22:33я конечно зачастую охраняю диван т к сил нет, но вот например наш сисадмин попрется скоро на Эльбрус, вертикальный км и т п
22:34@backendsecret но сегодня среда!
я все еще во вторнике, как вы там потомки в среде? освоили космос?
twitter.com/SheVasya/statu…
Я поняла. У @backendsecret сломался бот для твиттера и натвитил весь материал за неделю сразу в один день! О_О #web22:37
@backendsecret какие выходные, когда ещё два больших рефакторинга, одна здоровая фича и интеграция крупного клиента?)
да тут рефакторинга то на 2 часа ..... 10 sprints later ;D
twitter.com/strizhechenko/…
Electric Six - Gay Bar youtu.be/-XNFokmDKrE via @YouTube
22:42@backendsecret о, помню в караоке исполнял это
есть еще такое ) youtube.com/watch?v=2a4gyJ… twitter.com/DimaSharikov/s…
22:45@backendsecret > Listening at double speed is audio cocaine22:48
есть тут те кто используют mercurial до сих пор? я например использую, не по своей воле конечно
22:57пойду пробегусь по разным аккам может вам что-нибудь сюда накидаю
23:00@backendsecret у нас в компании основные проекты на нем. Моя команда уехала на GitHub. Лично считаю hg приятней и удобней. Git сложноват.23:05
@backendsecret использую, мне норм. Алсо OpenJDK использует.23:05
@backendsecret а можешь дураку объяснить в чем принципиальная разница у git, svn, mercurial?
не, мне CTO объяснил про разницу в диффах, хэдах, etc, я просто делаю commit, merge, push, conflict: хэлп энибади twitter.com/DimaSharikov/s…
23:06немного бесит правда что нормально у mercurial ветку не закроешь если сделал branch, приходится коммитить, etc
23:08Modern Talking - Cheri, Cheri Lady youtu.be/rOBSv7UJ8II via @YouTube
23:11@backendsecret @DimaSharikov одно распределенное, другое нет + в гите мержить проще вроде + rebase и жонглирование коммитами как вздумается
я так жонглировал тоже коммитами, делал черипики в итоге снес папку и сделал ctrl+c / ctrl+v ) twitter.com/__pewpew__/sta…
23:14для тех кто не может смириться с однопоточностью в php и хочет псевдо - параллелизма =) github.com/kriswallsmith/… github.com/huyanping/simp…
23:18@backendsecret @DimaSharikov это пока не приходится поддерживать несколько lts релизов, которые разошлись в коде, но фикс нужен одинаковый23:19
@backendsecret @DimaSharikov основное отличие svn от git в подходе к коммитам: в svn когда хочешь поделиться, в гите для себя коммитишь23:19
И раз уж мне приходится работать с рельсами, то мб дадите какой-нибудь годный гайд/ман? @backendsecret
с рельсами завязал сразу как увидил всякие paginator в ActiveRecord, но может кто-то посоветует twitter.com/7rulnik/status…
23:25второй раз уже промазал мимо ссылки, однажды так в рабочий скайпо чат проном промазал, неловко было, да
23:26@backendsecret я б тож с радостью завязал бы, но… Там даже контроллер с js'ом внутри есть хаха
люди страдают и погибают twitter.com/7rulnik/status…
23:29кстати QML классная вещь, но я так и ниасилил ее в пуфоне
23:30вопрос для знающих, что лучше rabbitmq в псевдо AP или 2 rabbitmq через всякие consul?
23:32поставил #worldwide тренды в хэштегах т к локальные это тьма
23:38для тех кто все ищет что почитать но не может найти ) github.com/papers-we-love…
23:39@backendsecret вот это действительно опасно ))) а еще кричат, что говнокодеры в пхп сидят)
все так, но php это как автоваз, теперь долго еще придется доказывать, что не верблюд ) twitter.com/kotchuprik/sta…
23:40вот тут костыли еще есть, вставайте и идите github.com/icicleio/concu…
23:46@backendsecret Да, мы используем. В небольшой команде с TortoiseHG - очень приятно. В большой наверное бы мешала каша из веток23:51
@backendsecret @github а если нужна норм многопоточка и чтоб код писать без оглядки, то #golang || #rustlang || что-то ещё?
я бы взял erlang / elixir , надо с акторами поиграться, гоферы это фу twitter.com/ruFog/status/6…
23:52@mkuleshov @backendsecret git делали специальные ребята для своих специальных задач. Там hg бы обломался
может быть twitter.com/eqr1234/status…
23:52кстати кто там просил русскоязычных #IT подкастов, их есть у меня =) github.com/AveVlad/russia…
23:53> Your Tweets earned 120,191 impressions over the last 24 hours pic.twitter.com/RPMTUyM7eI
23:57# Среда 241 твит
PEV: Postgresql Explain Visualisation. Holy cow, I want this for MySQL, too! tatiyants.com/postgres-query… pic.twitter.com/SrSpqBVEBQ0:02
Dead again. Time to change the bitcoin logo! by laurentmt0:05
redd.it/41tzkk pic.twitter.com/qGTXhk2M0x
Everything that's wrong with the world in one screenshot. pic.twitter.com/s4S415CDPK0:08
@backendsecret костыли, как и TypeScript0:16
вот еще для тех кто любит упарываться по юнит-тестам в php и coverage 100 % github.com/Vectorface/dun…
0:17о том куда еще можно приставить #AOP в php #DbC github.com/lisachenko/php…
0:19вот кстати что-то похожее на #DDD Tactical github.com/elcodi/elcodi
0:20для тех кто решил узнать почему тормозит #postgresql и прочие вещи github.com/rxin/db-readin…
0:21вот такой есть еще список ) github.com/ziadoz/awesome…
0:24@TvorZasp @backendsecret @ruFog @github самый крутой мануал по гоу где? хочу посмотреть что это.
гоферы покидайте ссылок человеку twitter.com/Onotoly/status…
0:29на сегодня наверное все )
0:29Блог python на хабрахабре — Python и красивые ножки — как бы я знакомил сына с математикой и… goo.gl/fb/a3xqlL
с детства такие вредные вещи подсовывать детям, мдауш twitter.com/pep8blog/statu…
10:40@backendsecret прям бери и открывай свой коверкинг-центр! со стартапчиками, смузи, макачинками и фрапучинами.10:41
@backendsecret @DimaSharikov @sam_dark эта тема закрыта уже, да?
нет, просто я ушел спать ) twitter.com/gvsmirnov/stat…
10:41В @backendsecret какой-то сектант вещает10:43
@backendsecret на сегодня? по-моему это была недельная, если не месечная норма =D10:44
@backendsecret @sum3rman @TvorZasp а если эрланг сравнить со скалой то насколько она уступает? Зависимость от JVM не в счет
там @sum3rman отвечает на ваши и наши вопросы twitter.com/ruFog/status/6…
10:45@Onotoly @backendsecret @ruFog @github вот habrahabr.ru/post/269355/ golang.org/doc/effective_… и тут книга крутая скоро ozon.ru/context/detail…10:45
@pinyslutty @backendsecret насколько помню, скайп в sqlite базу хранит(ил), и удаление при этом - всего лишь флаг в этой базе.
о том почему опасно кидать прон в скайпочате twitter.com/Onotoly/status…
10:46Закончите фразу: "везде всё время баги, а если нет багов, то тормозит, а если не тормозит, то ..."10:46
@ruFog @sum3rman @backendsecret @TvorZasp implicits в Scala это отличная вещь. Но как и любую отличную вещь, эту можно использовать неумело10:47
@backendsecret тебе бы стоило начать с вводного курса в DDD, многие ж не знают что это такое и сейчас не могут тебя читать
так курс был вводный, пара твиттов и т п, потом ушли в Strategic twitter.com/Timrael/status…
10:48@backendsecret @notxcain изучение Scala можно начать с книги, коих много. В них всё разжёвывается. Или курс на Coursera от Мартина Одерски10:48
@backendsecret из восьми чeловeк команды у нас -- двоe альпинистов и один скалолаз10:48
@gvsmirnov @backendsecret не, просто любопытно. Когда сидел на hg в последний наз мне пришлось обвешаться кучей модулей, чтобы стало удобно.
тоже так сделал, у меня .hgrc как "Война и Мир" по размеру twitter.com/43oN/status/69…
10:49@gvsmirnov @backendsecret но зато инфраструктура вокруг гита развернулась побольше, чем у меркуриала10:50
сегодня наверное немного меньше тут буду, т к надо закрывать таски из спринта, аджайл все дела )
10:55@ruFog @sum3rman @backendsecret @TvorZasp а какие есть сложности с имплиситами?10:57
@backendsecret я лично неоднократно встречал сервисы, которые умеют в гитхуб, но не умеют в произвольные гиторепозитории :)11:00
@backendsecret хайп достиг цели, Git нынче — default VCS. Что не значит «лучшая» :)11:04
Arias - Andromeda youtu.be/vsfxGs6siRY via @YouTube
11:06@eqr1234 @mkuleshov @backendsecret вы будете смеяться, но Mercurial начинали делать ровно для тех же задач — en.wikipedia.org/wiki/Mercurial… :)11:09
@backendsecret из того, что нашлось навскидку — app.shippable.com.11:12
о, нашел тулзу для рисования рисунков, думаю порисовать вам тут про то как связаны domain parts / bounded context и про связи между BC
11:17@backendsecret “рисование рисунков” - сразу чувствуются следы пхп в организме. От создателей масла масляного?
niet, просто так веселее звучит что-ли twitter.com/nimnull/status…
11:20@backendsecret что насчёт деплоя на прод с помощью гита? Или это bad practice?
true деплой это ведь через CI сервисы и прочее, ну Jenkins то любой может настроить ) twitter.com/followalgerd/s…
11:24у нас кстати плоховато с деплоеем, вот думаем може docker притащить чтобы сервисы было легко разворачивать, кто что посоветует? =)
11:27@backendsecret Docker рулит! Рекомендую Tutum.co еще заценить для ркестрации. Там пока бета, но уже впечатляет.11:31
@backendsecret @strizhechenko деплою нужна атомарность, откат и скорость. И минимум зависимостей. Если сервер ce ляжет, то как альтернатива11:35
@backendsecret смотря что и в каком количестве разворачиваете.Docker классный11:35
@backendsecret И заработать на жопу ещё 100500 новых проблем?11:46
yandex music предлагает купить HQ качество треков, ну да..... в России то )
11:49@notxcain @ruFog @backendsecret @TvorZasp ну вот implicit conversions через которые делают ops, это самое тяжело заметное без IDE, и даже с.11:49
@ruFog @backendsecret Может и решите 5-10, ну ок 15 проблем. Но заработаете на 5-ую точку 20 новых.11:50
Как-то я хотел сделать себе нормальный сайт. По привычке прогал его на C++, по полдня выжимая миллисекунды из каждой функции.11:55
@backendsecret из пользы — скорость деплоя, если образы билдить через CI и после тест-цикла пушить в прод. Ну и откат назад проще/быстрее12:06
@backendsecret сильно легче на станет. Нужно будет образы собирать и докер провижнить, а потом еще связи между контейнерами настраивать12:06
@de_gis Я же не сказал, что это абсолютное зло :) Где-то читал, что в России неправильно его готовят. @backendsecret
кому как, для меня скрам митинг это иногда выходной, т к он может длится 6 часов ) twitter.com/dcromster/stat…
12:10@backendsecret скрам к хуям12:11
@backendsecret 6 часов, рили? Когда у нас планирование стало порядка двух часов занимать - все взвыли :3
ну там много тасков обсуждается и все вместе backend / frontend, с перерывром на обед конечно ) twitter.com/43oN/status/69…
12:17we all collectively pretend GitHub OctoCat is a cute lil' mascot instead of horrifying night sweat terror fuel pic.twitter.com/vLttYvxVRE12:22
кстати кто-то lmax disruptor использовал? какие ваши ощущения? )
12:35@backendsecret вон @lisachenko прикрутил его у себя, говорит полет нормальный, можете его поспрашивать подробнее тоже если что )
12:36вот ссылка в том числе на php binding, сами понимаете на чем написан софт github.com/LMAX-Exchange/… github.com/prolic/PhpDisr…
12:39как я не люблю SOAP, но снова прилетела интеграция где SOAP
13:07@OdinYury @backendsecret без докера проще. У меня systemd-nspawn который запускается юнитом. Никаких лишних демонов и супервизор искаробки.13:11
@backendsecret ну вот фиг знает. Писать contract-first сервисы иногда даже приятно.
особенно когда нет доков почти или они кривые, а API падает из-за кривого xml ) twitter.com/43oN/status/69…
13:14@backendsecret обнимемся13:14
кто какие message oriented middleware использует? у нас вот RabbitMQ просто потому что он простой как пробка, ну и может кластерится
13:22@backendsecret ага, когда его лепят не либами а $xml .= '<tag>' . $var...
бывает и такое да ) twitter.com/Onotoly/status…
13:35вот и обед
13:35@nimnull @backendsecret а без докера нужно деб-пакеты собирать и нативные процессы провижинить. Проще что ли?13:45
@backendsecret это ж не middleware, это ж тупо mq. Нахер усложнять? Насчет простоты — роутинг и rpc юзаете?
один из примеров mom ведь twitter.com/nimnull/status…
14:36What if Belgium is make of 2 Bounded Contexts with 2 different languages? Oh, Wait...14:45
кто спрашивал про ru подкасты то тот список составлял @avevlad , можете у него еще поспрашивать ссылок
14:53быстро поднятое не считается упавшим, вот ровно 5 минут назад случилось и 200 сообщений в почту )
15:03@backendsecret вроде пагни из скб-контура запилили неплохую алертилку недавно, сам не щупал, только слушал чувака.15:11
github.com/moira-alert
вот тут @sam_dark советует rollbar.com и getsentry.com/welcome как полезные тулзы для exceptions handling
15:14@backendsecret @sam_dark для руби можно errbit на своем сервере поднять15:16
@backendsecret сейчас чисто для себя юзаю grafana + influxdb + crontab с башем без алертов для мониторинга всякой своей фигни, в итоге15:18
многие кто думают что #DDD это rocket science, оглянитесь, вдруг вы уже делаете #DDD но не используете его термины
15:27и вот еще думаю что где-то в 25 лет для программиста начинается завершающий этап т е годам к 30 можно выкидывать, т к развития 0 у многих
15:39@backendsecret все люди разные, как раз таки напротив вижу как много примеров после 30 когда проходит спесь и становятся прагматичными
может быть, но скорее всего это просто "добор" того что на ранних этапах пропустили или на что забили twitter.com/mpak999/status…
15:43@backendsecret зависит от человека
несомненно, но в большинстве случаев люди просто плывут по течению, поэтому это исключения из "правила" twitter.com/poebat/status/…
15:45@poebat @backendsecret тут приколюха почти в духе фрагментирования fs у мозга и в итоге i/o деградирует )15:45
@backendsecret добро пожаловать в европы, тут в 25 многие ещё только phd защищают, и из опыта имеют только стажировки15:51
@backendsecret мне всегда казалось, что завершающий этап после 40 начинается, так как я знаю много очень крутых разработчиков за 35 лет
есть исключения несомненно, но мы то знаем что их не так много twitter.com/anton_davydov/…
15:53@backendsecret Вижу много людей которые к 25-30 начинают только врубаться во все. Да и развитие часто скачкообразное в реальной работе.
ну если сидеть непонтяно где и просто просижвать штаны то да ) twitter.com/iloldhardly/st…
16:24@backendsecret Это я не к тому, что все люди до 25-ти лет идиоты, а к тому что лично у тебя максимализм ;)
с чего бы? мне 25 вот было, а с возрастом у людей появляются семьи, дети не до программирования там в общем twitter.com/freiksenet_ru/…
16:25@backendsecret @iloldhardly Я знаю программистов которые после 25 только начали программировать и ничего
вопрос в качестве этих программистов, мне тоже как-то говорили что грузчик стал сишарпером и что? twitter.com/freiksenet_ru/…
16:26@backendsecret не-е, уже поздно, как только программист отказывается работать за еду, его нужно выкидывать, инач он в манагера перерождается
все так twitter.com/Dev_De_Ar/stat…
16:27@backendsecret не-е, уже поздно, как только программист отказывается работать за еду, его нужно выкидывать, инач он в манагера перерождается16:27
@backendsecret @iloldhardly Скорее к 25-30 годам люди лучше начинают понимать и ощущать свои реальные пробелы в знаниях.
конечно, главное чтобы их не было много, но мы говорим о тех кто останавливается и тормозит в развитии twitter.com/unix_tips/stat…
16:28@backendsecret Часто бывшие «грузчики» более прагматичны и лучше решают задачи бизнеса, чем абстрактные развивающиеся разработчики :)
разве что лучше олимпиадников которые оптимизируют коней в вакууме twitter.com/iloldhardly/st…
16:29@backendsecret @Dev_De_Ar рекомендую поработать за деньги и хотя бы немного понимать своё участие в их зарабатывание, например,для компании.
не понимаю о чем это, я простой советский бомж twitter.com/unix_tips/stat…
16:30@backendsecret @SiliconBangalor а где этот фашист работает? Не в Яндексе случайно?
не, я практикую джихад в noname компании, куда мне до Яндекса ) twitter.com/Barlog_M/statu…
16:31@backendsecret я без преувеличения скажу, что все действительно крутые программисты, которых я знаю, примерно 30+16:31
@backendsecret я без преувеличения скажу, что все действительно крутые программисты, которых я знаю, примерно 30+
прямо таки все? ) twitter.com/White_Desay/st…
16:31@backendsecret с другой стороны такая тенденция с возрастом действительно есть.16:35
@backendsecret зависит от человека, а не от возраста.16:35
@backendsecret хотя независимо от возраста, стоит хапануть затяжное выгорание, и саморазвитие идёт куда подальше.
вот кстати да, получить burnout и не кодить полгода, такое тоже бывает ) twitter.com/AntonyKapustin…
16:35@backendsecret по JS'у может и да, но если посмотреть какой-нить митап гугловый/постгре/компиляторы..., то там 40+ мелькают мама не горюй)16:41
@backendsecret По этому-то после 30 программисты и круты — естественный отбор же. Выгорит восстановится — качество кода не упадет.
вовсе нет, выгорание не означает остановку полную, а те кто плывут мирно по течению и до 50 доплывут ) twitter.com/iloldhardly/st…
16:42Gary Numan - Cars youtu.be/Ldyx3KHOFXw via @YouTube
16:45@backendsecret @AntonyKapustin @White_Desay да лана, возраст не важен конечно. половина страны 23-25 летние сеньоры и к 30 годам манагеры :)16:56
Gogol Bordello - Lost Innocent World youtu.be/kG4x5q9YhA4 via @YouTube
17:25@backendsecret @43oN I know that feel, в одном проекте на Питоне пришлось отправлять вручную http запросы подставляя в стринг значения17:58
@backendsecret nats.io17:59
@freiksenet_ru @backendsecret человек с семьей вообще не человек. он, гад, за идею не работает и много думает :)18:20
солнце вроде село, значит можно двигаться домой )
18:42кто как считает, когда нужно повышать зарплату программисту и насколько?
18:42@backendsecret если человек отсидел несколько лет на легаси проекте, то он может сломаться. btw это хорошо коррелирует с возрастом19:33
добрался до дома, в городе сплошные пробки
19:36@ipronix @backendsecret @AntonyKapustin @White_Desay толковая молодёжь всегда за праздник, но искать их это адова боль. я только об этом.
все так, такие люди на вес золота, а если еще саморазвитие есть, то надо к батарее приковать twitter.com/ivanenok/statu…
19:38@ipronix @backendsecret @AntonyKapustin @White_Desay ну надо было уже говорить - "мой хлеб им в рот не поместится", чо :)19:39
@backendsecret @SiliconBangalor да, с пыхой к 30 лучше завязывать
ну ну, за последние годы php вырос очень сильно twitter.com/olegzeee/statu…
19:40@backendsecret всегда и намного.19:40А если серьезно, то пересмотр 1-2 раза в год вполне приемлем.
@backendsecret когда попросит. на столько, на сколько он полезен и сможет это аргументировать.
мне еще говорили вариант про сколько работает в фирме / выслуга лет twitter.com/ipronix/status…
19:41@ipronix @backendsecret так это и есть шантаж(:
вообще есть всякие перформенс ревью, но они не идеальны
у нас практикуют EPR twitter.com/DaryaChu/statu…
19:41@DaryaChu @backendsecret эти ревью тоже забавные - "претензий по работе нет, но вот один менеджер считает что вы не достаточно дружелюбны"19:42
@DaryaChu @backendsecret лучше всего - "я принес миллион фирме, поднимите зарплату на 5%"19:42
@backendsecret @ipronix @AntonyKapustin @White_Desay да лана, явисты вместе с джавой умерли 15 лет назад! любой жабаскриптер подтвердит! :)19:43
кстати секретный диванон, я нахожусь в Крыму, и тут действительно все плохо, серьезно =)
19:56@backendsecret как много компаний обитает там? и почему Крым?
большинство компаний было на аутсорсе, сейчас закрылись / уехали т к с Крымом иметь дела проблемно ) twitter.com/kotchuprik/sta…
20:03@backendsecret @SiliconBangalor так и js вырос, но языком от этого не стал20:04
@backendsecret плохо потому что вы там ? или это не связано ?
все верно, хорошо там где нас нет, на самом деле тут почти Москва, по ценам пока что, ну и менталитет людей ) twitter.com/ipronix/status…
20:07@backendsecret та-же фигня и в Славянск-е, многие закрылись и разбежались. Админить некого теперь =/
вся Украина по факту это один большой аутсорс ) twitter.com/POS_troi/statu…
20:08могу кстати поотвечать без политсрача конечно на вопросы про Крым и прочее, если кому вдруг интересно, про IT тут вроде рассказал )
20:19@ted_dunning @mapr Modern Streaming Analytics, Flow vs State. #ddtx16 pic.twitter.com/r8nQph6rr520:21
все мажу и мажу мимо твиттов, что такое то, скоро и прон придется скидывать
20:30@backendsecret стоит ли туда ехать отдыхать на майские праздники?
красивый парадна 9 мая есть, самолеты тоже низко летают что сигналки срабатывают, но сервиса нет, можете снять домик
twitter.com/ddddm/status/6…
но несомненный плюс Крыма это природа, ооооочень красивая и живая, несмотря на дачи которые тут успели уже построить все кому не лень
20:33на переправе кстати когда на пароме плыл видел дельфинов, любят они с паромами играть )
20:34@backendsecret @POS_troi вот он первый положительный момент :)20:37
из окна у меня море видно, не баварские конечно сосики, но думаю тоже сойдет =)
20:39@olegzeee @backendsecret @SiliconBangalor перейти от Tactical к Strategic #ddd ну и сам собой получиться decouple от ЯП.
Валентин все не унимается ) twitter.com/Onotoly/status…
20:40@backendsecret чащe всeго, дeньги для программиста нe являются мотиватором, но могут стать дeмотиватором. Повышать рeгулярно, но понeмногу20:42
Eddie Murphy - Party All the Time youtu.be/Wu_T5RykJkI via @YouTube
20:43но людей конечно понемного начинает бесить текущее положение, но терпят )
20:45@backendsecret @POS_troi ааа. пусть проливы вернут и я буду протурецким :)20:46
Why do webdevs choose languages other than PHP despite Mark Zuckerberg having proven that you can build a highly-scalable platform in PHP?20:52
вопрос тем кто в Германии живет, вы там хоть на Бундеслигу ходите? или все забили?
20:53@backendsecret 22 дурня пинают мячик - на что смотреть ?20:55
@freiksenet_ru @backendsecret у нас в компании нeгласно цeнятся "ипотeчники". Им, обычно, дают возможность заработать большe20:56
@ipronix @backendsecret eсли программист вспомнил про свою зарплату, то, скорee всeго, eму сдeлали прeдложeниe и он ищeт повод остаться21:01
@develop7 @backendsecret @SiliconBangalor еще Делфи за компанию. Люди, выбросите его из резюме!
кто тогда будет бухгалтерии формочки клепать? ) twitter.com/olegzeee/statu…
21:03@rubynovich @backendsecret программист не помнящий о зарплате - странный. мягко говоря.21:03
@rubynovich @backendsecret @freiksenet_ru mortgage driven development21:04
кто может, то покупайте сейчас домик / квартиру в ПГТ в Крыму, в целом недорого, зато природа / воздух все рядом, не люблю я города )
21:07@ipronix @backendsecret кодер, который просит + з/п уже мысленно попрощался с проектом. норм менеджер должен знать когда надо и на сколько.21:09
@rubynovich @DaryaChu @backendsecret хотели бы удержать - сразу предложили бы +15к и вопрос закрыт. а крохоборы хотели сэкономить
дело такоеэээээ, экономить на программистах нельзя, т к они это сразу чувствуют ) twitter.com/ipronix/status…
21:12@ipronix @backendsecret вот хороший менеджер это должен увидеть. кодер видит, что его труд ценят и это мотивирует сильней, чем выпрошенное21:12
@backendsecret перебои света наличествуют?
в городах не особо, только редко на окраинах, а так поселки отключают некоторые по графику 3 через 3 twitter.com/ruFog/status/6…
21:14очень умный человек @rubynovich , обязательно посоветуйтесь с ним, когда захотите менять работу / просить повышение
21:15@ipronix @DaryaChu @backendsecret с программистом нe угадаeшь. У нeго зарплата 250к и что eму твои 15к? Крохоборство, мeня цeнят на 15к и тд21:17
@ipronix @DaryaChu @backendsecret с программистом нe угадаeшь. У нeго зарплата 250к и что eму твои 15к? Крохоборство, мeня цeнят на 15к и тд
тут многие напряглись от рейтов, возможно все таки в баларусских рублях? twitter.com/rubynovich/sta…
21:17@backendsecret это всe жизнeнный опыт, жeна вeрховный hr и работа над проeктом "бизнeс-мотиватор"21:22
@backendsecret @DaryaChu @ipronix по большому счeту -- всe равно на сколько повышать. Eсли ты нe думаeшь об уходe, то любоe повышeниe -- гуд21:27
@backendsecret в hr обычно идут дeвушки молодыe , красивыe и общитeльныe, а вeрховный hr -- это ужe знак особо качeства. Нe смог устоять21:30
обратно немного про #DDD и взаимодействия Domain (domain parts - core, supporting, general, cm) и Bounded Context
21:38напомним что Domain разделим, и почти всегда у вас в проекте будет несколько Domain Model (Domain Part + Bounded Context)
21:38@backendsecret интересным вопросом является как правильно сопоставить нужный bounded context (solution space) с нужной domain part
21:39@backendsecret зачастую когда один Bounded Context пытаются натянуть на несколько domain parts, в итоге получается совсем плохо
21:42@backendsecret начиная от затыков в логике проекта, т к нарушают SRP, появляется много общего кода, нет четкого языка UL, все размыто
21:42@backendsecret невозможно нормально разделить проект по командам, изменения одной команды начинают рушить изменения другой, все знакомо
21:43@backendsecret все как в крыму короче21:46
@rubynovich @backendsecret ваши бы слова да богу в уши21:52
@RusAlexander @DaryaChu @ipronix @backendsecret у меня знакомый так в 3 раза поднялся :)22:02
@backendsecret собственно пересечение двух BC отмечено черной дырой на рисунке, BC - пунктир, Domain Part подписаны pic.twitter.com/ATIowSthG0
22:04@backendsecret в рамках domain part 1 может существовать два разных BC, что вполне норм пока они не пересекаются
22:04@backendsecret это лишь означает что domain part можно дальше доразделить и получить еще большую независимость в том числе в коде
22:05@backendsecret bounded context в приложении распихивать по разным папкам?
вполне, у нас так кое-где было, т к разделять легаси сложно, но возможно twitter.com/RusAlexander/s…
22:05@backendsecret со временем оно все равно распадется на независимые приложения общающиеся через event bus, вот и SOA есть
22:06@backendsecret но данная ситуация с пересечением BC печальна тем что в коде появятся god object User, который и User(login, pass) и Customer
22:07@backendsecret поскольку это не просто пересечение BC, но пересечение BC из разных domain parts с разными понятиями в UL
22:07@backendsecret другая ситуация, это когда в рамках одной domain part есть несколько не пересекающихся BC, тогда можно смело дробить domain
22:08@backendsecret и получить полностью независимые в том числе на уровне кода Domain Models
22:08@backendsecret третья и самая идеальная ситуация это как все поняли, сопоставление 1 в 1, когда одной domain part соотв. один BC
22:09@RusAlexander @backendsecret можно даже по разным репозиториям22:09
@backendsecret в такой ситуации даже делать ничего не надо, вы уже постарались и все верно сделали =)
22:10@backendsecret четвертая ситуация это когда разные BC пересекаются в рамках одной domain part как показано на рис pic.twitter.com/TA8Q67xCP9
22:12@backendsecret это означает что когда выделяли UL, то не до конца разделили слова и их значение, проблемы те же - общий код, god object, etc
22:13@backendsecret таким образом это наиболее вероятные отношения между DP / BC которые у вас могут быть
22:14@backendsecret распадется на плесень и липовый мёд :) сорян, не удержлся!22:14
@backendsecret среди них есть как хорошие так и плохие, главное следить за DDD Strategic и все будет хорошо
22:15@backendsecret ну и конечно очевидно что когда 1 DP и ей соотв. 1 BC то легко превратить в сервис, деплоить, независимо изменять
22:15@stasian @backendsecret серьезный ответ на серьезный вопрос - stackoverflow.com/a/24224902/500…22:16
пока все не разбежались, то сейчас еще порисую криво про взаимоотношения между BC (ACL, OHS+PL, Customer / Supplier)
22:17начнем с простой context map, где есть два BC и shared kernel pic.twitter.com/N1HZClwOaY
22:40@backendsecret похоже правда как-будто один пингвин клюет другого )
22:41@backendsecret при данном пересечении BC уже обсудили какие проблемы, но вполне допустимо и жизнеспособно
22:41@backendsecret если вы будете держать shared kernel не слишком большим, и команды будут уведомлять об изменениях друг друга и согласовывать
22:42другой пример, это когда два или несколько BC взаимодействуют по ACL pic.twitter.com/S2fEdHP3kz
22:43@backendsecret как видно из этого рисунка BC 1, взаимодействует с другими через несколько разных ACL, вроде все норм пока что
22:43@backendsecret но как только команда BC начинает понимать что "стрелять дробью" менять код 4 ACL это долго и трудоемко, то они
22:44@backendsecret просто заменяют несколько ACL на один единственный OHS (open host service) + PL (pulished language)
22:45@backendsecret в PL входят необходимые и достаточные слова из UL чтобы другие BC могли взаимодействовать с ним, тупо API в общем
22:45ну и относящееся к предыдущему о том как эволюционируют несколько ACL в 1 OHS / PL, будет как - то так pic.twitter.com/u6TlUPimPM
22:46@backendsecret только в обратную сторону, просто этот рисунок был нарисован вначале )
22:47@backendsecret таким образом команде у которой было несколько на своей стороне ACL, не надо особо переживать за другие Bounded Context
22:47@backendsecret поскольку команда предоставляет API (OHS / PL) в своем BC и другие BC могут легко с ним общаться вне зависимости от кол-ва
22:48последняя context map, это customer / supplier, ярким примером которого являются как раз таки domain events pic.twitter.com/EHS2N21Lg4
22:48@backendsecret customer "заказывает" некоторую функциональность у supplier и ждет пока это сделают, но как и говорил
22:49@backendsecret customer может отозвать запрос, таким образом несмотря на то что customer downstream, контроль над самим процессом у него
22:49по-хорошему нужны только два типа взаимодействия customer / supplier и OHS + PL / ACL, т к для SOA это классика: API + events
22:50@backendsecret но в зависимости от того какой это код, и насколько команды промахнулись при разделении domain на части, может выйти и похуже
22:51это наверное все, что я хотел вкратце рассказать про DDD Strategic, чтобы хоть немного было понятно и не было баззвордов как говорили
22:52текущему автору @backendsecret с его аватаркой и терминологией явно не место в его текущем географическом положении.22:52
текущему автору @backendsecret с его аватаркой и терминологией явно не место в его текущем географическом положении.
на самом деле в 6 лет я понял что внутри я явист, на всех уровнях кроме физического =) twitter.com/strangeqargo/s…
22:53@strangeqargo @backendsecret да, я ему давно говорю - едь в киев, даже вакансии под него видели :)22:54
Таким образом наш мифический псевдо e-commerce онлайн магазин распадется на несколько Domain Model или если про код - приложений:
22:57@backendsecret Inventory (Catalog), Purchasing, Marketing, Payment, Account, Accounting, Shipping, Tracking (трек посылок etc)
23:00@backendsecret понятно что все это легко приходит к сервисам в терминах SOA. Эти сервисы elementary / atomic
23:00@backendsecret с помощью edge services / API gateway можно строить какие угодно сервисы под разные платформы, ну как делает Netflix и прочие
23:01@backendsecret перечисленные сервисы лишь будут отдавать данные по API, и взаимодействовать с собой через MOM выбранный вами
23:02@backendsecret в целом схема проста и понятна, скейлится как угодно, но только появляются проблемы связаны с distributed системами, а именно
23:02@backendsecret порядок сообщений? точно один раз доставлено? нужно быть fault tolerance если один сервис не работает
23:03@backendsecret как мониторить сервисы на жизнеспособность? какой должна быть consistency? наперед забегая скажу что eventual
23:04@backendsecret как сделать быстрый перезапуск или исключение упавших сервисов? в общем все проблемы связанные с SOA, но зато и плюсов много
23:05@backendsecret можно менять систему как хотите, становится гибкой для требования бизнеса
23:05@backendsecret программисты довольны, и особо не пересекаются, autism intensifies, масштабируйте пока хватит денег
23:06@backendsecret если вдруг программист накосячил в marketing или каком-нибудь analytics BC то остальной код то будет работать (!) в теории
23:07@backendsecret в общем классика monolith VS services
23:08если немного забежать в SOA, и по поводу того почему eventual consistency а не какая-то из типов strong en.wikipedia.org/wiki/Consisten…
23:10@backendsecret все просто - бизнес готов пожертвовать частью функциональности, при том что будет работать другое, конечно если
23:10@backendsecret у вас не упало то что связано с core domain, т к бизнес не будет зарабатывать, а как известно все делается ради денег
23:11@backendsecret в #DDD как многие уже поняли eventual consistency между разными persistence слоями поддерживается с помощью ивентов
23:12@backendsecret собственно как и везде, только тут ивенты это Domain Event - что-то случилось в домене, OrderCompleted, InvoicePaid, etc
23:12в итоге получаем что наша система в целом будет вести себя как AP система в идеале
23:14@backendsecret да и вообще проще когда к системе меньше требований по consistency и прочих сложных условий
23:15@backendsecret важно отметить что иногда именно программисты вносят эту сложность, например ивенты
23:15@backendsecret для бизнеса может быть нормально если ивент придет через 5 или 10 минут, или через 2 дня
23:15@backendsecret но конечно есть и всякие биржи где задержки должны быть минимальны (но вы не работайте там лучше, поседеете)
23:16так что как видите никакого рокет сайнс нет, разделил и властвуй, пихай в сервисы пиши книги продавай другим =)
23:17но зачастую конечно отсутствие софта мешает нормально жить, и приходится костылять
23:18подытожим в итоге что знаем про DDD Stragetic:
23:19если кому-то будет интересно ну или нет, то завтра вечером расскажу про #DDD Tactical, вторую составляющую #DDD
23:22@backendsecret о том что такое persistence ignorance, impedance mismatch, ивенты и как с ними жить, как жить в мультиперсистентных системах
23:22@backendsecret бляяяяя, где ты этого говна нахватался вообще, школьник поехавший, ради денег my ass
топ кек twitter.com/OhTheAnguish/s…
23:25подкаст записан, выложу завтра
тут Один что-то записывает, возможно про историю викингов twitter.com/OdinYury/statu…
23:58# Четверг 206 твитов
— Здравствуйте, меня зовут Анна, я новый тестировщик.0:13
— Очень приятно!
— Это ненадолго.
@SiliconBangalor Ну или менее олдово - youtube.com/watch?v=RBZXI-…0:17
у кого есть жены программисты? как вы живете вместе? есть ведь стереотип, что люди одной профессии не могут жить вместе долго
0:21@backendsecret интересно практикуют ли они парное программирование?0:24
@backendsecret стереотип ;)0:25
@OdinYury @backendsecret тантрическое программирование0:27
@backendsecret Товарищ сисадмин, его жена тестировщик, не погромисты, но одного айтишного поля ягоды, и ничего, живут много лет душа в душу.0:27
@SheVasya @backendsecret ставят ли они на домашний сервер FreeBDSM ?
ставил я как-то #DLNA сервак дома на ubuntu 14.04, в итоге плюнул и поставил на винду за 15 минут другой ;D twitter.com/OdinYury/statu…
0:29@SheVasya @backendsecret ставят ли они на домашний сервер FreeBDSM ?0:30
@SheVasya @backendsecret @OdinYury тантрическое программирование - это одна из причин того, что индусских программистов так много.0:32
@backendsecret @OdinYury @SheVasya такой тоже ставил )) минидлна правда крутой, после апт-гет нужно всего 1-2 строки в конфиге и рестарт.0:35
«Наша типизация строгая, но справедливая»0:38
@backendsecret @SheVasya Заставляет опускать скобочки после себя в коде :(0:39
Ма, ма, смотри, я программирую на xml! Смотри, вот бин, вот контейнер, вот проперти ставятся. Я энтерпрайз программист, ты не понимаешь, ма!0:41
Не манер если у вас нету тёти:0:42Если у вас нету типов,
То и не надо их выводить
@backendsecret мне Plex понравился, но там dlna как опция.0:42
0:44Здравствуйте, федеральный проект "СТОПХАСКЕЛЬ". Это у вас что, правая свертка? Пожалуйста, монаду уберите, молодой человек.
В клофелиновом угаре0:46
Я пишу на ангуляре.
Если ж вмазать сразу две,
То пишу на тайпскрипте.
Не стоит воспринимать всерьёз людей, использующих Sublime, Atom, Vim, Emacs и другие текстовые редакторы для написания кода.0:49
Реакт, реакт — и в продакшн.0:50
-поручик, вы и на скале программировать можете?0:53
-на скале боюсь - вдруг макбук в пропасть улетит?
@backendsecret @SheVasya тк большинство прогеров ненастоящие, то как таковой проблемы нет0:55
Хотел задать очень крутое тестовое задание типа «разберитесь, что за херня происходит», но еще не разобрался сам и пришлось писать обычное.0:56
@backendsecret @SheVasya другими словами, вопрос можно сузить до "спала ли барбара лисков с дэнисом ритчи?"0:57
Хорошо быть мужиком: понадобился парсер - взял и написал за полчасика
то чем я занимаюсь pretty much дофига времени со всякими сторонними фигнями ;D twitter.com/Zhiliyo/status…
0:58на сегодня наверное все )
1:01@nimnull @backendsecret а в бостоне как-то по особенному работают ?10:22
@RusAlexander @backendsecret да, улыбнулся. Свободно конвертируемую валюту нужно знать10:22
@backendsecret это не пхп вырос, это у вас монитор вверх ногами
конечно twitter.com/nimnull/status…
10:23@asktwi @backendsecret 6 лет в браке, все отлично :)10:23
Поток сознания @backendsecret в моём твитторе imageshack.com/a/img905/3059/…10:24
#kphp все еще быстрее (хоть и не всегда) #hhvm, а #php 7 красавчик по памяти. vk.com/wall4899732_10…10:25
Наиохренненейшая визуализация конкурентной работы в Go от @idanyliuk divan.github.io/posts/go_concu…10:25
@backendsecret пиздец, ты вообще долбоеб? /сс @iamstarkov
ох уж эти "быдло разработчики" ) twitter.com/blia/status/69…
10:25Что делать, когда тебе предлагают писать на Java?10:33
jonhendren.com вот так должен был выглядеть мой сайт.10:34
@backendsecret @de_gis ну дык я о молодежи ваще, а не о персоналиях. грустное ощущение в целом создается.10:43
@OdinYury @backendsecret горько плакать:)
как по мне то работать в нормальной команде явистов одно удовольствие постоянный рост как разработчика удобные тулзы twitter.com/crashkin/statu…
10:51сейчас покида ссылок на книги и статьи для тех кто как и я интересуется #distributed но может не знает с чего начать
10:52В Java нужно хорошенько постараться выстрелить себе в ногу, в C++ нужно изрядно постараться этого не сделать. Вот почему?? :-)10:53
"Ты что дебил конченый на продакшн Docker выкатывать?!!!"(c) из производственного совещания :) #cloud10:56
@biercoff_enn @backendsecret а если это ортодоксальные явисты?10:56
@backendsecret @de_gis угу, пойду упорюсь веществами, выскочу на орбиту и стану энторпрайзщиком! :)11:02
@OdinYury @backendsecret обними их :) Но вообще я знаю проекты, где pure Java и всем все нравится. Тебе решать.11:02
@de_gis @backendsecret мы уже год как выкатили и ничего, не падает)11:03
@OdinYury @backendsecret кстати, если это адепты Java 6, то окропи их святой водой и убегай :)11:06
Google AI masters Go.11:10
But it's only the beginning.
Next step: Goo.
@backendsecret это больше сарказм, сам пишу на java-scala11:13
Distributed Systems Interview Questions11:17via @SeanTAllen and @tsantero
отличная книга в которой объясняется разница между local / remote на пальцах и почему SOAP / RPC не торт =) citeseerx.ist.psu.edu/viewdoc/summar…
11:23краткий ввод в #distributed и #CAP #FLP и т п book.mixu.net/distsys/single…
11:25классика для тех кто приходит в #distributed о том какие неверные допущения делают люди ) en.wikipedia.org/wiki/Fallacies…
11:28об основных моментах и затыка в #distributed somethingsimilar.com/2013/01/14/not…
11:29про то, что в основе многих #distributed систем тупо лежит лог и о том как его ментейнить engineering.linkedin.com/distributed-sy…
11:30вот еще от excore Linkedin blog.empathybox.com/post/195749363…
11:31другая подборка по #distributed the-paper-trail.org/blog/distribut…
11:32подборка по #distributed от @old_sound videlalvaro.github.io/2015/12/learni…
11:33С HL++2015, оказывается, видео уже можно глянуть онлайн.11:33
Посмотрел на себя со стороны, не так уж и плохо:) highload.ru/2015/abstracts… #highload
есть много других ссылок, в том числе на youtube, скину их вечером, так что stay tuned #distributed
11:34@backendsecret «Distributed systems: for fun and profit» для сарта норм. github.com/mixu/distsysbo…11:41
E-Type — Russian Lullaby #nowplaying music.yandex.ru/album/88174/tr…
11:44@backendsecret заметил, уже давно перестал интересоваться возрастом коллег и знакомых. Возраст, наверное :)12:02
вопрос тем кто работает в офисах, как вам тимбилдинг? часто это у вас бывает? дружите семьями с коллегами по работе? )
12:03@backendsecret я стараюсь держать дистанцию. Всех уважаю, но "дружить семьями" - нет. Лучше быть хорошими коллегами, чем плохими друзьями.12:10
@backendsecret художественная гимнастика какая-то, где после 25 только в тренеры :)12:22
@MaxBorisov @backendsecret да просто вас в лес надо вывести командой, сразу будет тимбилдинг :D12:22
@backendsecret #ddd а насколько доменная модель обычно проникает в код фронтенда?14:36
первое правило проектировки API: тот, кто его использует, должен страдать15:35
Написал кусочек на php, глазки болят. pic.twitter.com/l49cvZpsg217:03
@backendsecret @nimnull вот вам кстати за чаепитие george-rooke.livejournal.com/457852.html17:22
@backendsecret У некоторых людей развития и нету с самого начала. pic.twitter.com/OQUgOM9z0S17:44
ребята, #distributed час, ждут давно чужие земли нас. В смысле сейчас продолжу кидать полезные ссылки / книги
19:27вот кстати интересно, есть тут те у кого бизнес пишет спеки и прочие доки? кто практикует waterfall?
19:29@backendsecret "хуярь шоб заебись, ёпта"19:37
Маша И Медведи - Земля. youtu.be/SWGvGf6gsYc via @YouTube
19:41основная информация о #Dynamo с примерами как они разбивали ключи и как хранили их #distributed allthingsdistributed.com/files/amazon-d…
19:49про трейдоффы в #distributed #EDA bravenewgeek.com/what-you-want-…
19:53подборка от @rystsov который видимо там на #paxos собаку съел ) rystsov.info/#distr_key_val…
19:54я не знаю как это оказалось у меня, но там что-то важное по #distributed это точно hengxin-blog.logdown.com
19:57афир рассказывает про atomic consistency которая в этом вашем #paxos и прочих #CP системах youtube.com/watch?v=QdkS6Z…
19:58о том как gov.uk использует Merkle Tree (они есть и в Dynamo) у себя gdstechnology.blog.gov.uk/2015/10/13/gua…
20:00несколько ссылок на gossip и всякие universal ultra super timeout failure detector
20:02@backendsecret
cs.cornell.edu/home/rvr/paper…
zoo.cs.yale.edu/classes/cs426/…
youtube.com/watch?v=s4cCUT…
youtube.com/watch?v=aVYEY7…
изобрети свой #paxos и получи пирожок с полки paxos.systems/variants.html
20:04отличное объяснение про riak_ensemble и как у них работает #paxos youtube.com/watch?v=ITstwA…
20:05о том как uber научился #DISCO highscalability.com/blog/2015/9/14…
20:07вот еще забыл про #gossip кинуть highscalability.com/blog/2011/11/1…
20:08для затравки наверное хватит, если кому надо могу скинуть больше, в том числе книг ) также фолловьте @sum3rman и других #distributed людей
20:09также советую зафолловить @AterCattus это он там #VK кладет каждый раз и на #Go вам всем уведомления шлет
20:19I’ve just published a bunch of guides on how RabbitMQ internals work:20:24
@gregyoung It's uncannily accurately described in bit.ly/the-pragmatic-… as "Programming by Coincidence".
кстати о том как мы многие выбираем те или иные вещи в архитектуре ) twitter.com/ploeh/status/6…
21:08Musthave cheetsheet for distributed syncs pic.twitter.com/xZ0A5hMSmJ21:08
итак, посколько с #DDD Strategic уже знаем, что такое UL и BC, то неплохо бы знать как это все воплотить в код через #DDD Tactical
21:12в #DDD Tactical входят следующие многим известные вещи: Entity, Value Object, Repository, Factory, Specification, Domain Event, Service
21:13@backendsecret я не буду очень тщательно останавливаться на каждом из них, т к информации в инете много плюс думаю кто-то уже знает про них
21:13@backendsecret как и говорил есть простой способ перевести UL в код по старой традиции: существительные - entity, глаголы - service, методы
21:14@backendsecret Entity не что иное как некоторая глобальная в рамках одного или нескольких BC вещь, которая характеризуется своей identity
21:16@backendsecret для многих кто проектирует приложения с миграций это будет autoincrement тот же, но это не всегда верно
21:16@backendsecret примеры сущностей в псевдо магазине: Order, Customer, Account, Invoice, Client, Coupon.
21:17@backendsecret у сущности есть state который она и ментейнит, ничего сложного, обычно сущности создаются в Factory, но можно и без них
21:18@backendsecret важно отметить что сущность может играть разные роли в разных BC: User (profile), Client (marketing), Customer (purchasing)
21:19@backendsecret также другим важным аспектом является что сущности должны всегда находится в валидном состоянии, always valid
21:19@backendsecret или другими словами, вы не должны поддерживать инваринат сущности, #DbC в деле en.wikipedia.org/wiki/Design_by…
21:20@backendsecret ответ зачем это делать - просто потому что так проще жить, без лишних проверок, if-else и т п, только контракты
21:20@backendsecret в зависимости от BC сущность в одном BC может быть Value Object в другом, например в Bounded Context marketing
21:21@backendsecret есть сущность Coupon, у которой есть свое поведение, могут накладываться ограничения на купон, срок действия и т п
21:22@backendsecret в то же время в BC purchasing, Coupon ни что иное как Value Object - составляющая часть aggregate root Order, Order.coupon
21:22@backendsecret сущности также не появляются просто из воздуха а создаются либо из VO либо в результате действий определенных (сервисов)
21:25@backendsecret собственно давно Udi Dahan про это написал, советую прочитать и попытаться вникнуть udidahan.com/2009/06/29/don…
21:26@backendsecret сущности сохраняются в repository откуда забираются спеками или по identity, ничего сложного
21:27When deploying your Docker container fails21:27
что касается Value Object, то это все те же слова из UL, но они не являются сущностями, у них нет identity и меняющегося state
21:28@backendsecret многим известно и понятно что VO это практически immutable DTO, что впринципе справедливо и для DDD
21:29@backendsecret как упоминалось, примером VO, может служить Coupon в purchasing, или CustomerInfo в AR Customer, либо Money(10, 'Eur')
21:30@backendsecret принцип работы с VO простой - заменяйте весь VO целиком и не беспокойтесь по поводу его состояния, ведь его нет =)
21:30@backendsecret в зависимости от того какой persistence вы используете то может быть хорошая поддержка для VO либо нет
21:31@backendsecret например в Hibernate это всякие композитные типы, или в Doctrine2 - embeddable. Для Doctrine2 через custom type тоже можно
21:32@backendsecret вот полезные ссылки про VO or not VO
msdn.microsoft.com/en-us/magazine…
sapiensworks.com/blog/post/2014…
gojko.net/2009/09/30/ddd…
@backendsecret другие примеры VO: DateTime, Address(street, city, house), Tracking(longitude, latitude) и т п
21:42@backendsecret негласное правило работы в #DDD с сущностями и VO, это делать сначала все как VO если не уверены
21:43@backendsecret т к поменять VO в entity гораздо проще чем бегать по коду и менять состояние и убирать методы какой-то entity
21:43@backendsecret лишние поведения и состояния это всегда зло, в них можно утонуть
21:43На этой неделе самый дельный @backendsecret со времён @AlexSerbul
спасибо, самые стойкие останутся до конца наверное ) twitter.com/PetrMyazin/sta…
21:44На этой неделе самый дельный @backendsecret со времён @AlexSerbul21:45
поговорим о Repository, если в двух словах то это коллекция сущностей.
21:46@backendsecret из Repository получают уже сохраненные сущности либо по identity либо по Specification
21:49@backendsecret люди путают specification и query object изза того что не все persistence либы могут обеспечить хороший persistence ignorance
21:50@backendsecret также стоит отметить что Repository сохраняет сущности только на уровне domain, без всяких flush на уровень persistence
21:51@backendsecret иначе это уже Table Module какой-то или псевдо Active Record, тут поможет entity manager ну или unit of work
21:52@backendsecret и то и то есть и в Hibernate и в Doctrine2, таким образом и происходит life-cycle сущностей:
21:52Когда программистами управляют опытные архитекторы или инженеры - все прекрасно! Когда менеджеры в галстуках - сразу видно кто умнее :-)21:54
@backendsecret также стоит отметить про плохую практику когда люди начинают клепать repository простым extends от класса вендора
21:59@backendsecret таким образом в интерфейс проникают ненужные методы, которые потом как всегда кто-то будет использовать в коде
21:59@backendsecret и ни про какой DbC речи конечно же уже не идет, поэтому не стоит так делать, используйте DbC правильно:
22:00@backendsecret на уровне domain model нужный контракт repository - интерфейс, а реализацию скидывайте вниз в port.adapter/{vendorname}
22:00@andrzejkrzywda If you name everything as "data", you really can't go wrong.22:01
@backendsecret простой класс, чем-то напоминающий ту самую Factory из GoF, кстати многие путают static::createNoName() и factory method )
22:03@backendsecret желательно но не обязательно создавать entity внутри factory, т к это будет единственная точка входа и контроля always valid
22:03@backendsecret внутри фабрики создаете сущность, проверяете спеками на уровне домена бизнес правила, стоит отметить что многие путают это
22:04@backendsecret кто-то думает что проверка email на уникальность это бизнес спека, что на самом деле не так
22:04@backendsecret корректным было бы привести пример где в factory при создании order из cart проверяется максимальное колво order-line / price
22:09@backendsecret вот тут немного набросано с @Onotoly всяких мыслей по поводу Factory gist.github.com/Ragazzo/7e1497…
22:10одна из интересных вещей в #DDD Tactical это specification, как ни странно, вроде простая вещь, но с ней иногда возникают недопомнимая
22:12@backendsecret согласно #DDD есть 3 вида спецификаций:
22:12@backendsecret если кто не знает то вот ссылка en.wikipedia.org/wiki/Specifica…
22:13@backendsecret примеры каждой из спек можно найти много в интернете, я лучше остановлюсь на use-case когда с ними бывают проблемы
22:15@backendsecret во-первых люди часто путают specification и query object, из-за того что не все persistence либы могу обрабатывать спеки
22:17@backendsecret это касается спек типа 3 (на выбор из repository), ведь по факту надо проитерировать по всей коллекции и отфильтровать
22:18@backendsecret из-за этого приходится добавлять в спеки разные методы вида specification.getCriteria() или что-то такое
22:19@backendsecret во-вторых иногда люди пихают результат спек как boolean attribute какого-либо aggregate root, что тоже неправильно
22:19@backendsecret либо совершают эти действия в каком-то методе ->isCanBeDoneWithThisAggregateRoot(), например тот же Order
22:20@backendsecret можно сделать order->canBeInvoiced() в котором проверять customerInfo, или другие required вещи, но есть проблема
22:23@backendsecret никто не гарантирует что метод обязательно вызовут и во вторых он никак не принадлежит сущности, это операция над ней а не ее
22:23@backendsecret поэтому меняем на спеку CanOrderBeInvoicedSpecification->isSatisfiedBy(order) и живем спокойно, обойти спеку будет сложнее
22:24@backendsecret к тому же с точки зрения UL лучше использовать спеки т к они и воплощают разные restrictions которые есть в domain
22:24@backendsecret насколько знаю в .NHibernate в LINQ автоматически спеки переводятся в query criteria и прочие вещи, это круто
22:25@backendsecret разные примеры спек тут набросал по-быстрому gist.github.com/Ragazzo/c7f07b… и полезные ссылки
codeproject.com/Articles/67011…
#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…
22:36остались только Domain Event и Service, ну про Domain Event особо нечего и говорить даже, тот же самый VO только ивент ^_^
22:40@backendsecret примеры domain events - UserRegistered, OrderCompleted, InvoicePaid, OrderCanceled, CouponUsed
22:41@backendsecret в зависимости от того на каком этапе ваш проект - SOA или в одной папке но разделенный правильно по BC, у вас может быть
22:41@backendsecret как простой pub / sub через средства языка, собственно event manager, либо pub / sub через mom вида AMQP и т п
22:42@backendsecret везде есть свои плюсы и минусы конечно, при SOA там приходится бороться с deduplication ивентов
22:42@backendsecret также стоит отметить что та самая eventual consistency в #DDD достигается именно с помощью ивентов
22:43@backendsecret ивенты желательно кидать из уровня domain, а не application, можно через статичный фасад вида DomaiEvents::fire()
22:43@backendsecret также кидать их следует ПОСЛЕ того как событие случилось а не ДО, в таком случае если ивент свалится его легко ререйзнуть
22:44@backendsecret но да придется бороться с deduplication, но это легко сделать с помощью идемпотентной обработки и проверки на то был ли ивент
22:44@backendsecret в системе или нет, обычный unique id вида aggregate root + event name + UUID вполне может более менее позволить фильтровать
22:45@backendsecret т.е. тру все проверить все инварианты на этапе создания доменного объекта в фабрике, а не в Repository#add()?22:47
Hall and Oates - Out of Touch youtu.be/s_8KR-n2fBQ
22:55@backendsecret тут надо дополнить, что одна и та же вещь в одном BC может быть сущностью, а в других BC - VO22:57
Чтобы поймать эксепшн, надо думать как эксепшн22:57
последняя но не менее важная часть #DDD Tactical в нашем списке это Services, которые люди обычно игнорят и получают в щии
23:02@backendsecret на самом деле получают громадные сущности с SRP брейками и прочие проблемы )
23:02@backendsecret сервисы это все те же глаголы из UL в #DDD Strategic конкретного Bounded Context, но которые остались бесхозными )
23:04@backendsecret как определить domain service:
23:05@backendsecret важно отметить что services должны быть stateless, side effect free functions, т е в них не хранится состояние
23:07@backendsecret также они не должны (либо подумайте дважды) изменять входящие сущности
23:07@backendsecret если вспомнить что Udi Dahan говорил про сущности и что они не создаются из воздуха, то станет очевидным что
23:08@backendsecret сущности создаются в сервисах в результате входных данных либо взаимодействия других сущностей, например
23:09@backendsecret RegistrationService использует UserFactory чтобы создать User в profile/account Bounded Context, еще одно преимущество в том
23:10@backendsecret что часто в таких случаях надо кидать Domain Event и теперь вы точно знаете где он должен быть а не по всему коду applicaiton
23:10@backendsecret также стоит отметить что на сервисы как и на repository распространяется правило DbC en.wikipedia.org/wiki/Design_by…
23:11@backendsecret т е оставляем на уровне домена только контракт - интерфейс все остальное в port.adapter, о нем расскажу чуть позже
23:12@backendsecret другие примеры сервисов PasswordService::verify/generate, AuthenticationService
23:13@backendsecret другой важный аспект заключается в том что если в вашем BC вы обрабатываете ивенты из другого BC, то это тоже надо делать
23:13@backendsecret в сервисах а не просто писать event handler на уровне application
23:13@backendsecret OrderCompleted - event, OrderCompletedHandlingService - domain service, который вызывается на applicaiton уровне подписчиком
23:14@backendsecret некоторые примеры domain services и того как в них могут создаваться сущности, в том числе с проверками спек ниже по ссылкам
23:15Не понимаю про что @backendsecret сейчас пишет столько постов, видимо что то стоящее #DDD #DDDDD #R2D2 pic.twitter.com/AkU9BZJU8n23:15
@backendsecret важное замечание, не переусердствуйте с сервисами чтобы не получить anemic model - модель в которой сущности не имеют state
23:18@backendsecret в которой сущности (entity) состоят только из set / get, а вообще сеттеры и геттеры это плохая практика, конечно
23:19вот собственно и все что я хотел вкратце рассказать про #DDD Tactical, чтобы было понятно о чем я тут вещал без баззвордов =)
23:26дальше будет только интереснее, можно будет обсудить как раз таки теперь #SOA #EDA и то как масштабировать все эти services #DDDD ;D
23:27@backendsecret Нифига себе вкратце :)23:28
как многие уже могли понять, что на уровне кода, что на уровне проектирования у всех в той или иной степени #DDD мог присутствовать )
23:29@de_gis @backendsecret ну не рассказывайте сказки, а? :) m.habrahabr.ru/post/144686/23:50
Обновил плагин Golang к PyCharm и все GOPATH слетели. pic.twitter.com/QU534MT8JQ23:55
# Пятница 64 твита
@xnopso @backendsecret тру это когда система типов не дает тебе создать неправильный инстанс, слава компиляторам :)0:11
на сегодня наверное все )
0:17завтра можно будет обсудить всякие интересные темы как и хотели #SOA #EDA #distrbuted , явисты и прочие матерые люди очень даже вэлком )
0:18Very, very impressive result by Google's Go program.0:21
nature.com/news/google-ai…
всем доброе утро, остался последний рабочий день на этой неделе, кто куда на выходных собирается? горы? клуб? диван?
10:32@backendsecret диван сам себя не потопчет10:46
@backendsecret в горы хочется. Вообще считаю, что лучше отдыха не существует, чем отдых на природе. Но проведу выходные на диване ;(10:46
@backendsecret стол, ноутбук, диплом -_-10:47
@backendsecret куда с такой погодой и эпидемией гриппа можно пойти? Только в соседнюю комнату. :(10:51
@backendsecret надо бы на каток наведаться, если не растает10:51
я вот тоже дома буду наверное, охранять диван )
10:51@dcromster @backendsecret последний раб. день? Твои бы слова да серверам в настрйки :)10:56
@backendsecret Еще три рабочих дня :-D
#VK трудится непокладая рук или серверов =) twitter.com/AterCattus/sta…
11:02кстати написание доков это тоже работа программиста, а не просто набросать код. У вас забивают на доки?
11:05@backendsecret доки для слабаков а комменты в коде так вообще хипстерство какое-то!11:09
кстати о доках, для каждого сервиса у нас доки на API тоже пишутся, простые конечно но usable, в виде curl команд и объяснения API response
11:10@backendsecret погода супер, как минимум в лес на лыжах )11:54
@backendsecret и доки, и джавадоки с контролем по чекстайлу на CI, кто фейлит план эти планы в CI тому бьют по рукам :-)
неплохой такой процесс ) twitter.com/xnopso/status/…
11:55@backendsecret у нас 5 команд на проекте, иначе хаос11:58
@backendsecret сами не пишут. Если попросить то бывает два исхода “ок сделаю” и “ты чо охуел на гитхабе примеры а код самодокументируемый!”
хорошо что хоть не говорять идти за доками в тесты ) twitter.com/crashkin/statu…
12:12@backendsecret для документирования RESTful API есть такая штука- swagger.io. Получается как спек для API+кодогенерация клиента12:12
@backendsecret live-demo тут editor.swagger.io/#/12:12
сейчас читаю книгу "Release It!" , отличная книга ) amazon.com/Release-It-Pro…
12:25кстати про #SOA , стоит отметить что первая версия предполагала синхронность, и только вторая стала на путь #EDA en.wikipedia.org/wiki/Service-o…
12:30часто люди не понимают как разбивать систему на сервисы, но теперь с помощью #DDD вы знаете как минимум один подход, хотя их несколько
12:34@_bublik_ @backendsecret я думаю основная инфа тут github.com/swagger-api/sw… ну и широкий взгляд тут swagger.io/tools/12:34
как и говорил раньше, кто-то использует #BPMN для разбивания системы на сервисы #SOA en.wikipedia.org/wiki/Business_…
12:36поскольку говорим про сервисы, то кроме hystrix и phystrix, кто как поддерживает fault tolerance? #SOA
12:40This is so true and it hurts a bit hearing it laid out so clearly. #dddeu pic.twitter.com/KsEKrhTDZx14:25
@abroadunderhood Как дела с Го? Играют в парках?14:27
неплохой набор статей как вводная для тех кто хочет узнать про #microservices #SOA nginx.com/blog/introduct…
14:33для тех кто спрашивал про Маркова или #BPMN вот вам чтиво, по-моему там считают криволинейные интегралы ) #SOA hindawi.com/journals/jam/2…
14:34Skeeter Davis - The end of the world youtu.be/sonLd-32ns4 via @YouTube
15:53@backendsecret нет, иначе меня же поддержка сожрет / сам буду поддержкой в итоге / нанимать кучу суппортов придется.17:45
Я жадный, так что пишу)
@backendsecret про документирование кода - стараюсь придерживаться отсутствия придирок линтера, а он заставляет описывать все.17:45
интересует кроме известных, кто на какие проблемы натыкался при переходе к #SOA ? у явистов наверное больше всех проблем было
20:16ой все разбежались видимо, пойду закажу пиццу и буду продолжать монолог =)
20:50@backendsecret а я пойду с либой для стейт-машин экспериментировать и время от времени сюда заглядывать21:55
@backendsecret если про первый случай все понятно, то на втором можно немного остановится, чтобы можно было сделать retry, надо чтобы
22:41@backendsecret ваши сервисы могли обрабатывать такие действия в идемпотентном стиле, аналогично тому как это делается с ивентами
22:42@backendsecret также стоит отметить, что ваши SLA могут не позволить вам сделать retry в текущем запросе, и придется делать новый запрос
22:43@backendsecret с этим работать то лень, а уж обсуждать ....
а мне норм, очень даже весело и интересно ) twitter.com/ipronix/status…
22:44@backendsecret не выливается ли SOA это удорожанием поддержки? Ведь разные сервисы, есть дублирование части кода в каждом сервисе22:47
отдельная тема в #SOA это services autodiscovery, оно может быть как server side так и client side
22:48@backendsecret что касается backend то проще использовать zookeeper или consul которые будут отдавать нужные адреса сервисов другим сервисам
22:56@backendsecret таким образом можно будет легко избежать ситуации когда запросы попадают на упавший сервис, т к он будет исключен из SR
22:56@backendsecret SR - service registry. Также с помощью consul легко мониторить состояние сервисов, впринципе можно костылять и Zabbix
22:58@backendsecret преимущество consul в том что он был изначально под это заточен и там много моментов отвечающих за это, в том числе
22:59@backendsecret информация о состоянии сервисов передается с помощью gossip, что позволяет быстро узнать про состояние сервиса
23:00@backendsecret полезные ссылки consul.io , сайт Zookeeper думаю все смогут найти
23:01в #SOA 2.0 по-умолчанию принято обмениваться ивентами, в основном это асинхронные ивенты, обычный MOM en.wikipedia.org/wiki/Message-o…
23:04чтобы всех не томить долгими рассказами, сейчас покидаю полезных ссылок в том числе на #faulttolerance темы, т к почему то их мало
23:05@backendsecret обосновать целесообразность перехода от монолита к SOA
отличный вопрос кстати, вот я знаю пару способов, кто что предложит еще? twitter.com/RusAlexander/s…
23:11пара статей от #Netflix о том как что такое circuit breaker и почему надо запросы к elementary services посылать параллельно
23:19@backendsecret
techblog.netflix.com/2011/02/redesi…
techblog.netflix.com/2013/01/optimi…
techblog.netflix.com/2012/02/fault-…
techblog.netflix.com/2011/12/making…
@backendsecret я всю неделю писал код как минимум по 6-8 часов в сутки, и мог пропустить. Не могли бы вы повторить ? =)
господи, золотой вы наш человек, а я то уже давно научился на работе youtube левым глазом смотреть, а правым в #IDE twitter.com/RusAlexander/s…
23:28# Суббота 40 твитов
@backendsecret вот и раскрыта тайна людей не умеющих писать код не в IDE :)
нас раскрыли ) twitter.com/imdefined/stat…
0:04на сегодня наверное все, завтра продолжим немного про #SOA и закончим темой про #EDA а в воскресенье все будут спать =)
0:22кстати если тут есть пиратствующие люди, которым нужны книги по #distributed #SOA #DDD то пишите @Kukuruzovich в ЛС email, скину
0:26@backendsecret классная аббревиатурная неделька👍0:31
всем тем кто думает, что в программировании есть сексизм - всем пофиг на то пестик у вас или тычинка, а вот на ЧСВ не пофиг #Dev #Life
0:35после смены персонажа он неплохо так выглядит =) youtu.be/HNpLuXOg7xQ youtube.com/watch?v=CgEXmF… //cc @OdinYury
0:40@imdefined @backendsecret если писать в не IDE и без автодополнений то придётся учить синтаксис по полной а оно-же очень лень :))
можно писать во всяких редакторах с плагинами, будете как в #FastFurious обвешанные спойлерами ) twitter.com/POS_troi/statu…
1:06можно подводить промежуточные итоги недели, кому как понравилось? как вам "баззворды" эти? поняли их смысл? темы заинтересовали? =)
1:07@backendsecret ну к примеру буду я писать в том-же VIM с пачкой плагинов, он в некоторых моментах любой IDE фору даст. :)1:35
Senior jabba developer pic.twitter.com/xy5RPeIlmi1:36
запустил там #Diablo3 на #PS4 очень круто выглядит, я все время жал X и уже стал 2 уровня ) #PressXToWin
1:39@backendsecret Ведущий хороший и темы интересные :D9:13
доброе утро, сегодня хоть недолго но с вами снова буду я, всем удачных выходных и хорошего отдыха =)
9:15Repeat 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...9:51
В это сложно поверить, но если меньше болтать и больше делать - результат будет офигенный.9: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!9: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…9:55
This year I learn to program.9:56
@backendsecret темы интересные и важные, ведущий молодец!11:29
можно конечно делать по разным методологиям проектирование, но рано или поздно если Вы хотите развиваться, то придете к #DDD, вопрос времени
21:56начать наверное знакомство с #SOA рекомендовал бы с этой книги packtpub.com/application-de…
21:56помимо конечно книги Нюмана, которая хорошая, но капитанская )
21:57ну а если кто-то хочет понять как скейлить ваши сервисы то вот вам куб =) microservices.io/articles/scale…
21:58неплохая новость для любителей #Codeception , почти behat стори ) //cc @davert github.com/Codeception/Co…
21:59небольшая книга по #API с важными tips / tricks =) apigee.com/about/resource…
22:02вообще иногда встречаю людей которые не понимают зачем код ошибки убирать из http status в сообщение, и всегда отвечать 200
22:02@backendsecret не про REST-любителей конечно разговор
22:03@backendsecret платежные системы иногда так просят делать - всегда отвечть 200 и в body на русском писать ошибку22:05
если кому-то надо книги по #DDD в электронном варианте, то тоже стучитесь в ЛС, перегоните потом pdf в epub например =)
22:08если кто не знал что скейлить #Redis можно и без cluster нормально =) github.com/twitter/twempr…
22:10для тех кто хочет все таки начать разбираться с #DDD вот вам книги, вчера отвечал на этот вопрос ) twitter.com/backendsecret/…
а также ссыла на литературу, в нужном порядке, которую можно почитать по #DDD twitter.com/backendsecret/…
22:11к сожалению книг по #EDA #CEP хороших днем с огнем не сыщешь, но хоть что-то есть =) amazon.com/gp/product/032…
22:13а в общем и целом, хотелось бы заметить, что настоящие интересные вещи это в #AAA gaming development, там очень круто =)
22:15если вдруг кто-то не знал про faker ) github.com/fzaninotto/Fak…
22:19из разговоров с людьми, что использовали, все говорят, что #SLA не такие как заявлено, особенно затыки в сетях
22:23@backendsecret @meowthsli негодую, когда вместо 4xx или 5xx отвечают 200.23:07
на сегодня наверное все )
23:15# Воскресенье 6 твитов
@backendsecret есть еще #roshi - github.com/soundcloud/ros… - слой который crdt поверх redis натягивает13:55
Читал хороший совет что в публичном апи, хорошо кидать ошибки иногда просто так, чтобы разрабы не забыли обработать twitter.com/backendsecret/…13:57
@gvsmirnov @backendsecret @meowthsli А мне норм, по мне если сервер жив - надо отвечать 200 со статусом/причиной.13:57
@backendsecret если речь про амазон, то нареканий особых нет: все предсказуемо и работает + есть бесплатные серваки для pet-projects13:59
на этой неделе наверное все, спасибо всем кто слушал, задавал запросы, фавал ) youtube.com/watch?v=qnVD7W…
17:01по поводу mercurial ) mercurial-scm.org/wiki/mpm/trans…
17:02# Ссылки
www.youtube.com
- https://www.youtube.com/watch?v=eokfnKpqEfU
- https://www.youtube.com/watch?v=5P4qMBXT4P8
- https://www.youtube.com/watch?v=H0i_bXKwujQ
- https://www.youtube.com/watch?v=2PCdGwViVMM
- https://www.youtube.com/watch?v=sJOD7Bsllso
- https://www.youtube.com/watch?v=ov5pxaIbJlM
- https://www.youtube.com/watch?v=zddj4BA_7OM
- https://www.youtube.com/watch?v=WgYhYw-lS_s
- https://www.youtube.com/watch?v=93bjEF_mAwo
- https://www.youtube.com/watch?v=SiMHTK15Pik
- https://www.youtube.com/watch?v=2a4gyJsY0mc
- https://www.youtube.com/watch?v=fBPPFRgXfgk
- https://www.youtube.com/watch?v=Lc0sA2WsCgY
- https://www.youtube.com/watch?v=RBZXI-7xzXs
- https://www.youtube.com/watch?v=QdkS6ZjeR7Q
- https://www.youtube.com/watch?v=s4cCUTPU8GI
- https://www.youtube.com/watch?v=aVYEY75qn3c
- https://www.youtube.com/watch?v=ITstwAQYYag
- https://www.youtube.com/watch?v=9UoMClocBgY
- https://www.youtube.com/watch?v=CgEXmF7_9_I
- https://www.youtube.com/watch?v=ff7nJZvaeOg
- https://www.youtube.com/watch?v=qnVD7WuarSo
www.amazon.com
- http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202
- http://www.amazon.com/NET-Domain-Driven-Design-Problem-Solution/dp/0470147563
- http://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577
- http://www.amazon.com/Release-It-Production-Ready-Pragmatic-Programmers/dp/0978739213
- http://www.amazon.com/gp/product/0321200683
github.com
- https://github.com/PhpFriendsOfDdd/state-of-the-union
- https://github.com/VaughnVernon/IDDD_Samples
- https://github.com/dotnet/orleans
- https://github.com/odesk/phystrix
- https://github.com/qandidate-labs/broadway
- https://github.com/szjani/predaddy
- https://github.com/SmartGecko/GovernorFramework
- https://github.com/beberlei/litecqrs-php
- https://github.com/goaop/framework
- https://github.com/CoralineAda/
- https://github.com/opal/opal/issues/941
- https://github.com/bundler/bundler/pull/3305
- https://github.com/pulsarIO/realtime-analytics
- https://github.com/kriswallsmith/spork
- https://github.com/huyanping/simple-fork-php
- https://github.com/papers-we-love/papers-we-love
- https://github.com/icicleio/concurrent
- https://github.com/AveVlad/russia-it-podcast
- https://github.com/Vectorface/dunit
- https://github.com/lisachenko/php-deal
- https://github.com/elcodi/elcodi
- https://github.com/rxin/db-readings
- https://github.com/ziadoz/awesome-php
- https://github.com/LMAX-Exchange/disruptor
- https://github.com/prolic/PhpDisruptor
- https://github.com/moira-alert
- https://github.com/mixu/distsysbook
- https://github.com/rabbitmq/internals/
- https://github.com/swagger-api/swagger-ui
- https://github.com/Codeception/Codeception/pull/2750
- https://github.com/twitter/twemproxy
- https://github.com/fzaninotto/Faker
- https://github.com/soundcloud/roshi
en.wikipedia.org
- https://en.wikipedia.org/wiki/Enterprise_service_bus
- https://en.wikipedia.org/wiki/Domain-driven_design
- https://en.wikipedia.org/wiki/Design_by_contract
- https://en.wikipedia.org/wiki/Mercurial#History
- https://en.wikipedia.org/wiki/Consistency_model
- https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
- https://en.wikipedia.org/wiki/Specification_pattern
- https://en.wikipedia.org/wiki/Service-oriented_architecture
- https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation
- https://en.wikipedia.org/wiki/Service-level_agreement
- https://en.wikipedia.org/wiki/Message-oriented_middleware
music.yandex.ru
- https://music.yandex.ru/album/219772
- https://music.yandex.ru/album/2039668/track/18149811
- https://music.yandex.ru/album/2291897/track/471005
- https://music.yandex.ru/album/435890/track/3887664
- https://music.yandex.ru/album/30903/track/305992
- https://music.yandex.ru/album/65007/track/609698
- https://music.yandex.ru/album/2391373/track/20935114
- https://music.yandex.ru/album/88174/track/76275
gist.github.com
- https://gist.github.com/Ragazzo/830cc195b54fde87268d
- https://gist.github.com/Ragazzo/27a02ab5c814db4bad0f
- https://gist.github.com/Ragazzo/f373ad6bf7744783b0cc
- https://gist.github.com/Ragazzo/815d6f306a278d7779e6
- https://gist.github.com/Ragazzo/7abcbea9cdf08c4dc201
- https://gist.github.com/Ragazzo/7e14973648e757f2191d
- https://gist.github.com/Ragazzo/c7f07b3257de0edcd682
- https://gist.github.com/Ragazzo/b7637fa23e379391d022
youtu.be
- https://youtu.be/23XqlPb6Iq8
- https://youtu.be/uTeSkg-YIWI
- https://youtu.be/IDt0OlVqmNY
- https://youtu.be/-XNFokmDKrE
- https://youtu.be/rOBSv7UJ8II
- https://youtu.be/vsfxGs6siRY
- https://youtu.be/Ldyx3KHOFXw
- https://youtu.be/kG4x5q9YhA4
- https://youtu.be/Wu_T5RykJkI
- https://youtu.be/SWGvGf6gsYc
- https://youtu.be/s_8KR-n2fBQ
- https://youtu.be/sonLd-32ns4
- https://youtu.be/HNpLuXOg7xQ
other
- http://www.infoq.com/minibooks/domain-driven-design-quickly
- https://dddsamplenet.codeplex.com/SourceControl/latest
- https://msdn.microsoft.com/en-us/library/jj591569.aspx
- http://msdn.microsoft.com/en-us/magazine/dn385704.aspx
- http://cs5.pikabu.ru/images/big_size_comm_an/2015-10_3/144466304017554624.gif
- http://www.oreilly.com/pub/au/5873
- https://www.mapr.com/blog/author/ted-dunning
- http://bugs.ruby-lang.org/
- http://hanamirb.org/
- http://www.noisli.com/
- https://discuss.neos.io/t/product-vision-flow-neos/770
- http://dddinphp.org/
- http://noiz.io/
- http://udidahan.com/2009/06/29/dont-create-aggregate-roots/
- https://dzone.com/articles/something-is-technically-wrong-twitterdown
- http://5minphp.ru/episode11
- http://5minphp.ru/episode11/
- http://rcmp.me/
- http://rcmp.me/?p=1672
- http://rcmp.me/?p=2000
- http://rcmp.me/?p=654
- http://docs.zope.org/zope.interface
- https://www.google.ru/webhp?q=domain+driven+design+javascript
- http://martinfowler.com/eaaCatalog/domainModel.html
- http://webmeetups.net/mgroups/25
- https://raindrop.io/collection/876526
- http://tatiyants.com/postgres-query-plan-visualization/
- https://redd.it/41tzkk
- https://habrahabr.ru/post/269355/
- https://golang.org/doc/effective_go.html
- https://golang.org/doc/
- http://www.ozon.ru/context/detail/id/34671680/
- https://app.shippable.com/
- http://www.scala-lang.org/blog/2015/11/16/minutes-from-nov-2015.html
- http://drawisland.com/?w=1024&h=768
- http://tutum.co/
- https://rollbar.com/
- https://getsentry.com/welcome
- https://vimeo.com/7670880
- https://m.habrahabr.ru/post/275951/comments/
- https://m.habrahabr.ru/post/144686/
- http://stackoverflow.com/a/24224902/5006740
- https://www.homemediaserver.ru/index.htm
- http://imageshack.com/a/img905/3059/108GM5.jpg
- http://vk.com/wall4899732_1016
- https://divan.github.io/posts/go_concurrency_visualize/
- http://www.jonhendren.com/
- https://storify.com/davidkua/distributed-systems-interview-questions
- http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.7628
- http://book.mixu.net/distsys/single-page.html
- https://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/
- https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
- http://blog.empathybox.com/post/19574936361/getting-real-about-distributed-system-reliability
- http://the-paper-trail.org/blog/distributed-systems-theory-for-the-distributed-systems-engineer/
- http://videlalvaro.github.io/2015/12/learning-about-distributed-systems.html
- http://www.highload.ru/2015/abstracts/1983.html
- http://george-rooke.livejournal.com/457852.html
- http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
- http://bravenewgeek.com/what-you-want-is-what-you-dont-understanding-trade-offs-in-distributed-messaging
- http://rystsov.info/#distr_key_value
- http://hengxin-blog.logdown.com/
- https://gdstechnology.blog.gov.uk/2015/10/13/guaranteeing-the-integrity-of-a-register
- http://www.cs.cornell.edu/home/rvr/papers/GossipFD.pdf
- http://zoo.cs.yale.edu/classes/cs426/2013/bib/chandra96unreliable.pdf
- http://paxos.systems/variants.html
- http://highscalability.com/blog/2015/9/14/how-uber-scales-their-real-time-market-platform.html
- http://highscalability.com/blog/2011/11/14/using-gossip-protocols-for-failure-detection-monitoring-mess.html
- http://i.imgur.com/cwXHW2N.jpg
- http://www.sapiensworks.com/blog/post/2014/05/20/Is-OrderLine-an-Entity-or-A-Value-Object.aspx
- http://gojko.net/2009/09/30/ddd-and-relational-databases-the-value-object-dilemma/
- http://www.codeproject.com/Articles/670115/Specification-pattern-in-Csharp
- http://codebetter.com/gregyoung/2008/12/21/ddd-specifications-language-and-locality
- http://codebetter.com/gregyoung/2009/01/20/ddd-specification-or-query-object
- https://ru.wikipedia.org/wiki/
- http://www.nature.com/news/google-ai-algorithm-masters-ancient-game-of-go-1.19234
- http://www.theguardian.com/technology/2016/jan/27/google-hits-ai-milestone-as-computer-beats-go-grandmaster?CMP=share_btn_tw
- http://swagger.io/
- http://swagger.io/tools/
- http://editor.swagger.io/#/
- https://www.nginx.com/blog/introduction-to-microservices
- http://www.hindawi.com/journals/jam/2014/160608/
- http://microservices.io/patterns/client-side-discovery.html
- http://microservices.io/patterns/server-side-discovery.html
- http://microservices.io/articles/scalecube.html
- https://www.consul.io/
- http://techblog.netflix.com/2011/02/redesigning-netflix-api.html
- http://techblog.netflix.com/2013/01/optimizing-netflix-api.html
- http://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html
- http://techblog.netflix.com/2011/12/making-netflix-api-more-resilient.html
- https://coub.com/view/7l48z
- http://www.google.com/search?q=ddd+framework+java
- https://www.packtpub.com/application-development/soa-made-simple
- http://apigee.com/about/resources/ebooks/web-api-design
- https://www.mercurial-scm.org/wiki/mpm/transition