В конец 2013 года Maxim Chernyak написал замечательную статью в которой подчеркивал исключительную важность поддержки архитектуры приложений настолько простой, насколько это возможно. Удивлен что на хабре до сих пор не было перевода, предлагаю ознакомиться с переводом данной статьи. Также прошу сообщать о всех возможных опечатках и неточностях перевода.
Преамбула
Много лет назад у нас было приложение Ruby on Rails. Все начиналось с объектов. Некоторые выступали прототипами для других объектов. Другие требовали множество связанных с ними частей, частей этих частей и т.д. Насколько много? Пожалуй, одним прототипам известно. Эти прототипы должны были иметь интерфейс для администрирования, но смена логики работы одного прототипа могла привести к цепной реакции в остальных частях. Любое изменение объектов и их прототипов пролегали через связанную сеть из различных моделей. Сложность интерфейса для администрирования быстро взлетела до небес. Дошло до того момента, когда прототипы должны были стать сериализуемыми, сохраняющими фрагменты своей логики. С этого момента каждая фича становилась предметом очень трудной реализации, и, в конечном счете, приложение скатилось к состоянию, когда модификация и доработка стали практически невозможны. Было такое чувство, будто CMS навязывала себя в качестве посредника между фичей и ее реализацией, подобно системам, ориентированным исключительно на бизнес-логику, с нагромождением высокоуровневых абстракций.
Думаете это была худшая часть проекта? Это был еще только минимально жизнеспособный продукт в новом стартапе.
Читать полностью »