Все праздники потратил на изучение DDD - очередная серебряная пуля в технологиях разработки программ. Суть её в том, что слой бизнес логики не должен знать о том, что лежит на более низких слоях. Побудило к изучению этой технологии то, что текущий мой сервис сообщений невозможно покрыть юнит-тестами, т.к. бизнес-логика размазана между питоном, нодой и постгресом. Звучит технология, конечно, многообещающе, но выступающие всегда оговариваются, что полностью её внедрить не получается. Сходу, эта идея противоречит двух всеми признанных людей: 1. Время разработки в конечном итоге не зависит от выбранных технологий, а зависит только от квалификации разработчиков (Джеф Элджер) 2. СУБД — это краеугольный камень приложения (Том Кайт) В своей практике, мы регулярно отсекаем некоторые идеи менеджеров с формулировкой, что это крайне ресурсозатратно при реализации в БД. И очень много бизнес-логики подстраивается под возможности БД. Например, в чатах мы не маркируем прочитанным каждое сообщение, а выставляем дату последнего прочтения, т.к. отдельных сообщений может быть очень много. Так же есть упрощения с точки зрения раздачи прав на файлы - т.к. обратное сильно замедлит дисковую подсистему. Ярким примером зависимости от нижнего уровня является секционирование БД. При внедрении секционирования, вместе с каждым идентификатором объекта нужно обязательно передавать идентификатор секции БД, где он лежит.
3 года назад