Найти в Дзене

Все праздники потратил на изучение DDD - очередная серебряная пуля в технологиях разработки программ. Суть её в том, что слой бизнес логики не должен знать о том, что лежит на более низких слоях. Побудило к изучению этой технологии то, что текущий мой сервис сообщений невозможно покрыть юнит-тестами, т.к. бизнес-логика размазана между питоном, нодой и постгресом. Звучит технология, конечно, многообещающе, но выступающие всегда оговариваются, что полностью её внедрить не получается. Сходу, эта идея противоречит двух всеми признанных людей:


1. Время разработки в конечном итоге не зависит от выбранных технологий, а зависит только от квалификации разработчиков (Джеф Элджер)

2. СУБД — это краеугольный камень приложения (Том Кайт)

В своей практике, мы регулярно отсекаем некоторые идеи менеджеров с формулировкой, что это крайне ресурсозатратно при реализации в БД. И очень много бизнес-логики подстраивается под возможности БД. Например, в чатах мы не маркируем прочитанным каждое сообщение, а выставляем дату последнего прочтения, т.к. отдельных сообщений может быть очень много. Так же есть упрощения с точки зрения раздачи прав на файлы - т.к. обратное сильно замедлит дисковую подсистему.

Ярким примером зависимости от нижнего уровня является секционирование БД. При внедрении секционирования, вместе с каждым идентификатором объекта нужно обязательно передавать идентификатор секции БД, где он лежит.
1 минута