ГлавнаяНовостиБлог компанииРассказы PRO: Чистая архитектура

Рассказы PRO: Чистая архитектура

Мы запускаем новую рубрику “Рассказы PRO”, в которой специалисты Centicore Group будут делиться актуальными и интересными профессиональными темами в формате интервью. Руководитель проектного офиса Андрей Кутепов рассказал о том, что такое чистая архитектура программного обеспечения, и для чего она необходима.

 

 

  • Что такое архитектура программного обеспечения?
  • Хороший вопрос, на который, как мне кажется, не существует единственно верного ответа. Лично мне больше всего нравится сравнение значимости процесса построения архитектуры ПО с проектированием собственного дома.  Обе активности требуют хорошо продуманного проектирования, чтобы быть функциональными и удобными для использования. 

 

  • Для чего нужна архитектура программного обеспечения?
  • Опять же, развивая пример сравнения процесса построения архитектуры ПО с проектированием дома, нужно отметить, что программное обеспечение должно быть построено с учетом не только текущих потребностей, но и будущих возможностей и изменений. Архитектура программного обеспечения, как и архитектура дома, включает в себя различные слои. Например, как крыша и стены дома защищают его от погодных условий, так и архитектура программного обеспечения должна защищать его от ошибок и внешних угроз безопасности. 
  • Чем опасна плохая архитектура?
  • Опасность ошибки на этапе проектирования архитектуры, как правило, проявляется не на этапе разработки ПО, а в процессе его эксплуатации. Каждая система имеет длинный жизненный цикл, который включает не только его разработку, но также его дальнейшую поддержку и развитие. И вот если на этапе разработки мы допустили серьезную архитектурную ошибку, то этапы поддержки и развития могут стоить колоссальных финансовых затрат компании. Хорошая же архитектура может потребовать чуть больше времени и финансов на этапе разработки, но эти ресурсы, однозначно являются самой верной инвестицией, “на дистанции” они, без преувеличения, могут сэкономить миллионы. 
  • Какой должна быть хорошая архитектура?
  • Бесконечно долго можно перечислять атрибуты качества архитектуры, если выделить ключевые – гибкость, масштабируемость, безопасность, производительность. Парадокс, но порой, преследуя, достижения высокого показателя одного из атрибутов качества, сильно страдает другой. Именно поэтому идеальной архитектуры не бывает, архитектура – набор компромиссов, на которые мы вынуждены идти с целью достижения желаемого результата. 
  • Что самое сложное в работе архитектора?
  • Сложно как раз то, что всегда необходимо идти на компромиссы, всегда сложно перебороть в себе перфекциониста, который требует, чтобы все было идеально. Но практика показывает, что такого не бывает. Поэтому всегда приходится выявлять ключевые атрибуты качества, определять пороговые значения для неключевых параметров, работать с рисками, учитывать все кейсы использования и развития системы. 
  • Неоднократно слышала термин “Чистая архитектура”, какие принципы лежат в ее основе?
  • Очень интересный вопрос, на самом деле, термин “Чистая архитектура” это более низкоуровневый термин, чем архитектура ПО. Она рассматривает организацию структуры программного кода решения, позволяя выделить на самый главный уровень – ядро приложения, его основные бизнес-правила, а все детали сделать зависимыми от него. Чаще всего требуется изменить не бизнес-логику, заложенную в ядро системы, а именно внешние инструменты, позволяющие работать приложению с внешними источниками, инструментами хранения и передачи данных и т.д. Поэтому ключевыми правилами являются разделения ядра приложения и деталей, а также выстраивание однонаправленной зависимости деталей от ядра.
     
  • На какие элементы можно разложить приложение по “Чистой архитектуре”?
  • Очень часто иллюстрацией к Чистой архитектуре является картинка с разрезанным луком, на котором видны слои. Эти слои и являются элементами приложения и определяют главное правило, все зависимости должны идти снаружи во внутрь. Выделю ключевые слои, сортируя по приближению к ядру системы.

    1. Фреймворки и драйверы – на данном уровне, как правило такие инструменты, как база данных, внешние коннекторы, веб-фреймворки;
    2. Адаптеры интерфейсов – набор адаптеров для преобразования данных из формата уровня сущностей в уровень фреймворков и адаптеров и наоборот.
    3. Варианты использования – варианты использования системы, которые используют уровень сущностей и требуют от них использовать их бизнес-правила для реализации поставленных целей.
    4. Сущности – сущности заключают в себе критические бизнес-правила приложения, это ядро системы.

 

  • Какое влияние оказывает “Чистая архитектура” на ваши проекты?
  • Результатов от использования “Чистой архитектуры” огромное количество, например, снижение порога входа в проект новых разработчиков. При корректной организации структуры кода, человек очень быстро погружается в решаемые приложением задачи, быстро начинает приносить пользу проектной команде. Но самое главное влияние – это гибкость разрабатываемого решения, то есть всегда есть возможность просто и быстро вносить изменения по требованиям бизнес-заказчика или внешнего регулятора. Показатель экономии времени относительно решения с непроработанной архитектурой – колоссальный!
ИСТОРИЯ КОМПАНИИ
ХОТИТЕ БОЛЬШЕ УЗНАТЬ О CENTICORE GROUP?
Подробнее
Попробовать снова
Попробовать снова
Попробовать снова
Хорошо
Хорошо