Ось один конкретний запах архітектури / дизайну, з яким я стикаюся весь час: аналіз та звітування безпосередньо з транзакційної бази даних.
Це, звичайно, добре в деяких ситуаціях (тобто легких звітах), але в багатьох випадках вимоги щодо звітності та транзакційної обробки суперечать. Однак, оскільки це дуже просто / недорого зробити, звіти запускаються безпосередньо з БД трансакцій. Це викликає всілякі головні болі по обидва боки рівняння.
Зазвичай це спостерігається в додатках Enterprise LOB, btw. Я розумію, що багато SMB просто не мають ресурсів і ноу-хау для створення складів і марок даних (забудьте про кубики або налаштування для зменшення карти), але багато великих організацій, з якими я працював, мають ті самі проблеми.
Розробляючи систему, архітектор справді повинен усвідомлювати, що вимоги до звітності - особливо звіти про аналіз - та трансакційні вимоги найкраще трактувати як окремі питання, а не просто збирати разом на рівні бази даних.