Найти в Дзене
Стратегии проектирования компенсаций
Компенсации - это не просто отмена предыдущих шагов. Это новый бизнес-процесс, который требует тщательного проектирования. Перед разработчиками встают сложные вопросы: Давайте разберем ключевые стратегии проектирования компенсаций. На определенном шаге процесса произошла ошибка. Нам нужно откатить изменения, которые уже произошли, здесь у нас есть два варианта. Компенсация запускается сразу после ошибки, часто реализуется как синхронные вызовы, особенно когда в системе присутствует Оркестратор....
19 часов назад
Приоритизация по RICE: когда хочется больше точности
В одном из прошлых постов мы говорили об ICE - простом и быстром методе приоритизации задач. Сегодня рассмотрим его «старшего брата» - методику RICE, которая дает более взвешенные оценки. RICE - это эволюция метода ICE, который был создан в компании Intercom для объективного определения, какие задачи требуют внимания в первую очередь. Основная проблема, которую решает данный метод, - учет охвата аудитории, которую затронет разрабатываемая функциональность. Плюс вместо легкости реализации (Ease) учитываются трудозатраты, необходимые для реализации...
1 неделю назад
Testcontainers + DB Rider = конец проблем с данными в интеграционных тестах
Если у тебя когда-нибудь “плавали” интеграционные тесты из-за грязной БД — ты знаешь эту боль. Testcontainers решает только половину проблемы: он поднимает чистый контейнер. Но что происходит внутри теста? Как гарантировать предсказуемые данные и стабильные проверки? Ответ — DB Rider. Testcontainers для тех, кто не знает, что это Testcontainers — библиотека для интеграционных тестов, которая позволяет поднимать контейнеры Docker с различными образами (PostgreSQL, Kafka, Redis, MiniO, любые другие контейнеры) прямо в тестах, автоматически и изолированно...
2 недели назад
Элегантный хаос: где компенсации превращаются в проблему
В распределенных системах компенсационные транзакции — это спасательный круг для обеспечения согласованности. Но что, если этот «спасатель» сам тонет в сложности? Вместо надежности вы получаете хаос, ошибки и бессонные ночи для команды. Элегантное решение превращается в источник раздражения. Давайте разберем три главных антипаттерна, которых стоит избегать. Чрезмерно сложные компенсации Самая большая ошибка — создание чрезмерно запутанных компенсирующих действий. Иногда компенсационная транзакция по количеству шагов почти не уступает основному бизнес-процессу...
3 недели назад
💥 Проблемы и подводные камни хореографии
Представьте танец - каждый участник знает свои шаги и реагирует на движения партнёров без указаний хореографа. Но стоит одному из танцоров сбиться или споткнуться, и весь зал погружается в несвязный хаос! 💡 Хореография в распределенных системах предлагает свободу и масштабируемость, но на практике этот подход таит в себе немало ловушек. В этом посте разберем ключевые проблемы, а также рассмотрим практики, которые не позволят скатиться в беспорядок и внедрить эффективный контроль. Хореография подразумевает асинхронное взаимодействие через события без участия центрального оркестратора...
4 недели назад
Прокачайте тесты с Database Rider: от датасетов до версионирования данных
Если ваши интеграционные тесты тонут в хаосе тестовых данных, а ручные SQL-скрипты вызывают головную боль, то Database Rider — ваш супергерой. В прошлом посте мы разобрали основы, а сегодня нырнем в практику: от многоформатных датасетов и хитрых проверок БД до ускорения тестов и организации данных без бардака. Database Rider не ограничивается только одним форматом. Есть возможность выбрать один из поддерживаемых форматов данных: Database Rider дает возможность проверить состояние БД после выполнения теста с помощью аннотации @ExpectedDataSet...
1 месяц назад
🎯 HADI: От гипотезы к суперэффективному коду
Если вы работаете в разработке ПО, особенно в продуктовых командах, то, скорее всего, слышали о HADI-циклах. HADI часто воспринимают как инструмент менеджеров и аналитиков: A/B-тесты, конверсии, метрики. Но HADI — это не про маркетинг. Это способ принимать решения осознанно, проверяя предположения через данные. Это универсальный цикл принятия решений, основанный на проверке предположений и гипотез. HADI — это система мышления для любого, кто хочет принимать решение на основе данных, а не интуиции или установок «так принято»...
1 месяц назад
Почему ACID не работает в микросервисной архитектуре
ACID транзакции мощный инструмент, которые позволяет поддерживать целостность данных в реляционных СУБД. Это очень простой в использовании механизм - если что-то пошло не так, то мы откатываем транзакцию, а данные остаются согласованными. В микросервисной архитектуре каждый сервис владеет своими данными и (в идеале) своей выделенной БД. Да, в микросервисной архитектуре возможно реализовать механизм ACID транзакций, например через протокол 2 phase commit, но это будет нарушать ключевые принципы микросервисов - независимость, масштабируемость и отказоустойчивость...
1 месяц назад
🎼 Оркестрация: язык, который понимают и бизнес, и архитекторы
👩‍💼 Менеджеры любят видеть процесс целиком: от старта до результата. Но в хореографии это сложно - сервисы общаются напрямую, и картина теряется. 🎯 Оркестрация делает процесс прозрачным: бизнес и архитекторы видят одну и ту же модель, которую можно и читать, и исполнять. Это архитектурный паттерн, в котором управление определенным процессом осуществляется центральным менеджером - оркестратором. Он управляет потоком работ и координирует взаимодействие между участниками процесса. Он отвечает за то, кто, что, когда и при каких условиях должен делать...
2 месяца назад
Database Rider - простая работа с тестовыми данными
Если вы пишете интеграционные тесты для spring-boot приложений, то, скорее всего, сталкивались с проблемой инициализации данных перед тестом и их последующей очистки после окончания теста. Существует множество способов подготовки и очистки данных, вот некоторые из них: Эти варианты достаточно простые для начальной реализации, но у них есть существенные недостатки при дальнейшем использовании: Как упростить себе подготовку и очистку данных в интеграционных тестах? Использовать библиотеку Database Rider...
2 месяца назад
Хореография + Domain-Driven Design: как они сочетаются
Представьте, что ваша система — это оркестр, где каждый музыкант знает свою партию, но никто не машет палочкой. Вместо хаоса — гармония бизнес-процессов. В этом посте разберем, как Domain-Driven Design (DDD) и хореография в распределенных системах создают именно такую синергию: от моделирования событий до масштабируемой архитектуры. DDD — подход, который позволяет разрабатывать сложные системы на основе моделирования бизнес-процессов и правил. Хореография — это технический подход к реализации распределенных...
2 месяца назад
Чистый код – чистая планета: Практики энергоэффективной разработки
Всем привет! Сегодня хочу поднять вопрос энергоэффективности наших приложений. В эпоху экспоненциального роста вычислительных мощностей все больше внимания уделяется вопросам энергопотребления и снижения воздействия на окружающую среду. В этом контексте энергоэффективность и энергосбережение превращаются в ключевой и стратегический приоритет для IT-компаний. Все мы знаем примеры, когда компании оптимизируют свои затраты на электроэнергию за счет оптимизации IT-инфраструктуры: Но что, если внедрение...
2 месяца назад