Как вы обрабатываете Domain Events внутри Bounded Context?
Anonymous Poll
58%
in-process (transactional consistency)
49%
out-of-process (eventual consistency)
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Как вы обрабатываете Domain Events внутри Bounded Context?
Как вы обрабатываете Domain Events внутри Bounded Context? (уточненная версия)
Anonymous Poll
53%
in-process (transactional consistency)
29%
in-process (eventual consistency)
29%
out-of-process (eventual consistency)
👍1
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Как вы обрабатываете Domain Events внутри Bounded Context? (уточненная версия)
Transactional все-таки активно используется. Как вы версионируете агрегат, если он state based, а не Event Sourced?
Anonymous Poll
67%
Одна версия на одну транзакцию, даже если событий Доменных Событий агрегата несколько.
33%
По одной версии на каждое событие.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Transactional все-таки активно используется. Как вы версионируете агрегат, если он state based, а не Event Sourced?
По результатам опроса большинство предпочитает инкрементировать версию Агрегата единожды на транзакцию, а не на Доменное Событие (на факт изменения состояния).
Хочу поделиться результатом своих двухдневных размышлений по этому поводу, которые вынудили меня изменить эту точку зрения:
- https://dckms.github.io/system-architecture/emacsway/it/ddd/tactical-design/repository/causal-consistency.html
А какие у вас соображения по этому поводу?
#DDD #DistributedSystems #Microservices #CausalConsistency
Хочу поделиться результатом своих двухдневных размышлений по этому поводу, которые вынудили меня изменить эту точку зрения:
- https://dckms.github.io/system-architecture/emacsway/it/ddd/tactical-design/repository/causal-consistency.html
А какие у вас соображения по этому поводу?
#DDD #DistributedSystems #Microservices #CausalConsistency
Telegram
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Transactional все-таки активно используется. Как вы версионируете агрегат, если он state based, а не Event Sourced?
Одна версия на одну транзакцию, даже если событий Доменных Событий агрегата несколько. / По одной версии на каждое событие.
Одна версия на одну транзакцию, даже если событий Доменных Событий агрегата несколько. / По одной версии на каждое событие.
🔥2👍1
Forwarded from Блог Сергея Баранова (Sergey Baranov)
Большой-большой материал по «Data Engineering: ETL, ELT, Data Pipeline, Data Warehouse, Data Lakes, Data Marts»
https://ivan-shamaev.ru/data-engineering-etl-pipeline-data-warehouse-datalake/
https://ivan-shamaev.ru/data-engineering-etl-pipeline-data-warehouse-datalake/
Forwarded from Блог Сергея Баранова (Sergey Baranov)
Boehm - 1991.pdf
1.3 MB
Нетленная классика, принципы и практики управления рисками от Barry Boehm
🔥4
Forwarded from Блог Сергея Баранова (Sergey Baranov)
Заметки по распределенным системам.
Категории заметок
- Concepts
- Failure Detection
- Leader Election
- Replication Consistency
- Dissemination
- Anti-Entropy
- Gossip
- Distributed Transactions
- Consensus
- Paxos
- Message Queues
- Distributed Locks
- Clustering
- Cache
- Rate Limit
https://tangentyh.github.io/notes-of-tan/backend/distributed.html
Категории заметок
- Concepts
- Failure Detection
- Leader Election
- Replication Consistency
- Dissemination
- Anti-Entropy
- Gossip
- Distributed Transactions
- Consensus
- Paxos
- Message Queues
- Distributed Locks
- Clustering
- Cache
- Rate Limit
https://tangentyh.github.io/notes-of-tan/backend/distributed.html
tangentyh.github.io
Distributed System | Notes of Tan
Tan's notes.
👍8❤1
В следующем сообщении говорится о том, почему я для EventStorming использую Archi - чтобы с математической точностью вычислять наилучшую конфигурацию контуров микросервисов на основании принципа Low Coupling & High Cohesion:
Forwarded from Блог Сергея Баранова (Sergey Baranov)
A Metrics Suite for Microservices, EventStorming and DDD 👍
Measuring Coupling and Cohesion of Bounded Contexts on an EventStorming Domain Model
https://phillipjohnson.co.uk/a-metrics-suite-for-microservices-eventstorming-and-ddd
Measuring Coupling and Cohesion of Bounded Contexts on an EventStorming Domain Model
https://phillipjohnson.co.uk/a-metrics-suite-for-microservices-eventstorming-and-ddd
Forwarded from Архитектура ИТ-решений
Cranking out lines of code isn’t the most value-add activity for architects. But understanding system structures and hidden dependencies is, and debugging is all about that
Gregor Hohpe начинает 2023 год с разговора на нашу любимую тему: "Должен ли архитектор писать код" и приходит к неожиданному выводу о большей пользе для архитектора от участия в отладке: https://architectelevator.com/transformation/debugging-architect/
Gregor Hohpe начинает 2023 год с разговора на нашу любимую тему: "Должен ли архитектор писать код" и приходит к неожиданному выводу о большей пользе для архитектора от участия в отладке: https://architectelevator.com/transformation/debugging-architect/
The Architect Elevator
Debugging Architects
Whether architects must code or not has been much debated. Why not try debugging?
Forwarded from Архитектура ИТ-решений
Обещал найти ссылку о применимости шаблона описания архитектурных решений ADR для более широкого класса решений.
Делюсь: ADR = Any Decision Record? Architecture, Design and Beyond
Делюсь: ADR = Any Decision Record? Architecture, Design and Beyond
Olaf Zimmermann (ZIO, socadk, MAP author): portfolio, blog
ADR = Any Decision Record? Architecture, Design and Beyond
If architectural decision records are so useful to capture software design rationale, why not extend their scope: Can they log organizational and managerial decisions as well? How about everyday decisions?
👍1
Forwarded from Архитектура ИТ-решений
Fm7q8p7acAEUkiL.jpg
215.4 KB
Краткое графическое введение в c4model от IcePanel
https://blog.icepanel.io/2022/10/03/c4-model-for-system-architecture-design/
https://blog.icepanel.io/2022/10/03/c4-model-for-system-architecture-design/
🔥3❤1
Forwarded from Архитектура ИТ-решений
Долгое время единственным ISO-шным стандартом по архитектуре оставался ISO/IEC/IEEE 42010:2011 Systems and software engineering — Architecture denoscription. В 2019 году появились сразу два новых архитектурных стандарта 42020 и 42030. А в ноябре прошлого, 2022 года обновился и основной стандарт описания архитектуры.
Как именно, читайте здесь: https://mxsmirnov.com/changes-420x0/
Как именно, читайте здесь: https://mxsmirnov.com/changes-420x0/
❤🔥1
Forwarded from Блог Сергея Баранова (Sergey Baranov)
The Ultimate Guide To Software Architecture Documentation
This guide shows you how to write, structure, visualize and manage software architecture documentation in a lean way using appropriate documentation tools.
https://www.workingsoftware.dev/software-architecture-documentation-the-ultimate-guide/
This guide shows you how to write, structure, visualize and manage software architecture documentation in a lean way using appropriate documentation tools.
https://www.workingsoftware.dev/software-architecture-documentation-the-ultimate-guide/
workingsoftware.dev
The Ultimate Guide To Software Architecture Documentation
This guide shows you how to write, structure, visualize and manage software architecture documentation using appropriate documentation tools.
❤3
Forwarded from Блог Сергея Баранова (Sergey Baranov)
Собрал структурированную базу знаний по микросервисам на основе своих статей и переводов.
http://agilemindset.ru/микросервисы/
http://agilemindset.ru/микросервисы/
👍2
Forwarded from Блог Сергея Баранова (Sergey Baranov)
Вот такой вот прекрасный тест на ArchUnit, который объясняет суть слоя доменной логики. Должны быть зависимости только от самого себя и никаких внешних зависимостей.
🔥3
Блог Сергея Баранова
Вот такой вот прекрасный тест на ArchUnit, который объясняет суть слоя доменной логики. Должны быть зависимости только от самого себя и никаких внешних зависимостей.
В крупных приложениях этого, к сожалению, недостаточно, т.к. сам доменный слой тоже может расслаиваться, см. главу 16-17 книги Eric Evans.
👍3
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
В течении последнего месяца я попробовал программировать и по DDD + CQRS (no ORM), и по документации Django. Особенность ситуации в том, что за последние три года я программировал крайне редко, что устраняет "эффект недавнего". К слову, на Django я программировал…
Пишу своими руками сейчас два проекта. Один - по всем канонам DDD на малознакомом мне стэке. Другой - по документации Django Framework. Я уже говорил об этом.
По прошествии двух месяцев могу поделиться впечатлениями.
1. Скорость разработки на Django, все-таки быстрее, но не слишком существенно.
Это потому, что Django во всю использует рефлексию для минимизации количества кода.
Известно два способа решения этой проблемы - "reflective program" и "code generation", подробнее см. в главе "Metadata Mapping" книги "Patterns of Enterprise Application Architecture" by M.Fowler.
Таким образом, чтоб парировать превосходство Django Framework, нужно делать генератор кода для DDD-проектов. Тогда скорость разработки даже существенно превзойдет скорость на Django.
Основные потери времени на Django составляет борьба с Framework в каждом нетипичном кейсе. Это от 30% до 50% времени разработки.
В свою очередь, проект по DDD требует время на исследовательскую работу по способу структурирования кода.
2. Django накладывает более строгие требования к способности выдерживать когнитивные нагрузки. Нередко приходится погружаться в потроха Фреймворка, понимать его реализацию (а Django сегодня не такая уж и простая, как была 10 лет тому назад). Обзор и инспекция её плагинов так же требует погружения в детали их реализации. Встречались случаи, например, грубого нарушения потокобезопасности. Так что Django накладывает более строгие требования к квалификации исполнителя, кто бы не убеждал в обратном.
Однако, проект с чистого листа по DDD требует невероятно глубоких познаний и обширную работу с литературой. Хорошо то, что эти затраты однократны. Если под рукой уже есть сформированный качественный образец (а лучше - генератор кода), то справится любой мидл.
3. Моральное удовлетворение больше приносит разработка по DDD. Это чувство можно сравнить с выплаченным кредитом - теперь ты не заложник обстоятельств. Чувство свободы и независимости.
Если вы смотрели сериал "Is TDD Dead?", то заметили, что претензии David Heinemeier Hansson касались не столько TDD, сколько принципов Clean Architecture.
В принципе, для заказной разработки вполне пригодна разработка по Framework без всяких там DDD или Clean Architecture, и зачастую она способна дать существенный прирост темпов разработки.
Особняком возникает вопрос сопровождения таких продуктов, т.к. во фреймворках время от времени обнаруживают уязвимости, а поддержка публичного интерфейса всегда ограничена по своей длительности.
По прошествии двух месяцев могу поделиться впечатлениями.
1. Скорость разработки на Django, все-таки быстрее, но не слишком существенно.
Это потому, что Django во всю использует рефлексию для минимизации количества кода.
Известно два способа решения этой проблемы - "reflective program" и "code generation", подробнее см. в главе "Metadata Mapping" книги "Patterns of Enterprise Application Architecture" by M.Fowler.
Таким образом, чтоб парировать превосходство Django Framework, нужно делать генератор кода для DDD-проектов. Тогда скорость разработки даже существенно превзойдет скорость на Django.
Основные потери времени на Django составляет борьба с Framework в каждом нетипичном кейсе. Это от 30% до 50% времени разработки.
В свою очередь, проект по DDD требует время на исследовательскую работу по способу структурирования кода.
2. Django накладывает более строгие требования к способности выдерживать когнитивные нагрузки. Нередко приходится погружаться в потроха Фреймворка, понимать его реализацию (а Django сегодня не такая уж и простая, как была 10 лет тому назад). Обзор и инспекция её плагинов так же требует погружения в детали их реализации. Встречались случаи, например, грубого нарушения потокобезопасности. Так что Django накладывает более строгие требования к квалификации исполнителя, кто бы не убеждал в обратном.
Однако, проект с чистого листа по DDD требует невероятно глубоких познаний и обширную работу с литературой. Хорошо то, что эти затраты однократны. Если под рукой уже есть сформированный качественный образец (а лучше - генератор кода), то справится любой мидл.
3. Моральное удовлетворение больше приносит разработка по DDD. Это чувство можно сравнить с выплаченным кредитом - теперь ты не заложник обстоятельств. Чувство свободы и независимости.
Если вы смотрели сериал "Is TDD Dead?", то заметили, что претензии David Heinemeier Hansson касались не столько TDD, сколько принципов Clean Architecture.
В принципе, для заказной разработки вполне пригодна разработка по Framework без всяких там DDD или Clean Architecture, и зачастую она способна дать существенный прирост темпов разработки.
Особняком возникает вопрос сопровождения таких продуктов, т.к. во фреймворках время от времени обнаруживают уязвимости, а поддержка публичного интерфейса всегда ограничена по своей длительности.
Telegram
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Потихоньку возвращаюсь к Golang DDD Reference Application Grade. Это не только демонстрационный, но еще и вполне реальный проект, который, используя принципы теории игр, позволяет существенно повысить объективность и качество т.н. карма-движков, и повысить…
👍12❤3🔥1
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Пишу своими руками сейчас два проекта. Один - по всем канонам DDD на малознакомом мне стэке. Другой - по документации Django Framework. Я уже говорил об этом. По прошествии двух месяцев могу поделиться впечатлениями. 1. Скорость разработки на Django, все…
Как организовать БД для запуска интеграционных тестов на Golang? Да еще и чтобы можно было запускать тестовые кейсы параллельно, обеспечивая при этом изоляцию данных?
Ребята подготовили два решения, которые создают отдельную копию БД для каждого параллельного потока:
- https://github.com/pantafive/demo-repository-test by @pantafive
- https://github.com/xorcare/testing-go-code-with-postgres by @xorcare
Там же продемонстрировано как это сделать на GitHub workflow.
Все элегантно и просто. Мне это оказало неоценимую помощь при освоении малознакомого мне стэка.
#Golang #Testing
Ребята подготовили два решения, которые создают отдельную копию БД для каждого параллельного потока:
- https://github.com/pantafive/demo-repository-test by @pantafive
- https://github.com/xorcare/testing-go-code-with-postgres by @xorcare
Там же продемонстрировано как это сделать на GitHub workflow.
Все элегантно и просто. Мне это оказало неоценимую помощь при освоении малознакомого мне стэка.
#Golang #Testing
GitHub
GitHub - pantafive/demo-repository-test
Contribute to pantafive/demo-repository-test development by creating an account on GitHub.
🔥6👍2😢1🙏1🍾1
Forwarded from КП Наука
Умные туго соображают: исследование
Похоже, тестам на IQ приходит конец. Статья в престижном Nature Communications доказывает, что умным людям нужно больше времени для решения сложной задачи. Дело в том, что умный человек прикидывает все варианты, которые только возможны (и невозможны). Глупому многое и в голову не придет, и ему «все понятно». Поэтому умным надо время на подумать.
Тесты IQ устроены так, что соображать надо быстро, а правильные ответы – скорее из области «здравого смысла». Так что IQ определяет хорошего работника, сообразительного парня, но не умного человека. Не верьте тестам на IQ.
С вами был научный журналист Евгений Арсюхин.
Подписаться на КП Наука
Пишем о науке на KP.RU - серьёзно, просто и иногда весело!
@kpnauka
Похоже, тестам на IQ приходит конец. Статья в престижном Nature Communications доказывает, что умным людям нужно больше времени для решения сложной задачи. Дело в том, что умный человек прикидывает все варианты, которые только возможны (и невозможны). Глупому многое и в голову не придет, и ему «все понятно». Поэтому умным надо время на подумать.
Тесты IQ устроены так, что соображать надо быстро, а правильные ответы – скорее из области «здравого смысла». Так что IQ определяет хорошего работника, сообразительного парня, но не умного человека. Не верьте тестам на IQ.
С вами был научный журналист Евгений Арсюхин.
Подписаться на КП Наука
Пишем о науке на KP.RU - серьёзно, просто и иногда весело!
@kpnauka
🤔6🔥2
КП Наука
Умные туго соображают: исследование Похоже, тестам на IQ приходит конец. Статья в престижном Nature Communications доказывает, что умным людям нужно больше времени для решения сложной задачи. Дело в том, что умный человек прикидывает все варианты, которые…
В продолжение предыдущего сообщения - еще Kent Beck писал о проблеме "Borrowing Trouble", которую я называю "проблемой умных людей". Практика показывает, что эта проблема широко распространена. Наиболее умные разработчики зачастую работают гораздо медленнее посредственных. Но ситуация кардинально меняется, если им объяснить причины этого.
И еще пара ссылок в тему:
- https://habr.com/ru/company/web_payment_ru/blog/246081/
- https://www.hindawi.com/journals/np/2009/482696/
И еще пара ссылок в тему:
- https://habr.com/ru/company/web_payment_ru/blog/246081/
- https://www.hindawi.com/journals/np/2009/482696/
Telegram
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Умные туго соображают: исследование
Похоже, тестам на IQ приходит конец. Статья в престижном Nature Communications доказывает, что умным людям нужно больше времени для решения сложной задачи. Дело в том, что умный человек прикидывает все варианты, которые…
Похоже, тестам на IQ приходит конец. Статья в престижном Nature Communications доказывает, что умным людям нужно больше времени для решения сложной задачи. Дело в том, что умный человек прикидывает все варианты, которые…
🤔6👍5🔥2🤩1