Библиотека сайта rus-linux.net
Puppet
Глава 18 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: Puppet
Автор: Luke Kanies
Перевод: А.Панин
18.5. Выученные уроки
Говоря о реализации, мы гордимся различными типами разделения, которые применены в Puppet: язык полностью отделен от уровня абстракции ресурсов, транзакция не может напрямую повлиять на систему и на уровне абстракции ресурсов не принимается самостоятельных рабочих решений. Это наделяет разработчика приложений значительными возможностями контроля над процессом работы приложения, а также открывает доступ к информации о том, что и почему происходит.
Потенциал расширения возможностей и конфигурации Puppet также очень важен, ведь любой человек может создавать приложения на основе Puppet без лишних сложностей и вмешательства во внутренние функции. Мы всегда реализуем возможности приложения с использованием тех же интерфейсов, которые мы рекомендуем использовать нашим пользователям.
Простота и легкость использования Puppet всегда были приоритетными направлениями развития. Проект все еще достаточно сложно развернуть и запустить, но этот процесс значительно проще тех, что необходимы для введения в строй других аналогичных инструментов. За простоту приходится расплачиваться инженерными решениями, особенно в форме поддержки и дополнительной работы, связанной с проектированием, но это стоит того, ведь важно позволить пользователям заниматься своими задачами вместо задач, связанных с используемым инструментом.
Возможности конфигурации Puppet по истине замечательны, но мы немного увлеклись их реализацией. Существует очень много способов объединения компонентов Puppet и очень просто создать на основе Puppet работающий инструмент, который не удовлетворит вас в итоге. Одной из основных долгосрочных целей является значительное сокращение количества параметров в рамках конфигурации Puppet для того, чтобы пользователь без сложностей не мог осуществить некорректную настройку и мы могли со временем упростить процесс обновления без беспокойства о нестандартных ситуациях.
Мы также очень медленно реализуем значительные изменения. Существуют важные рефакторинги, которые мы планировали провести в течение многих лет, но никогда не проводили. В итоге наши пользователи будут работать с более стабильной системой в краткосрочной перспективе, но при этом осложнится поддержка системы и внесение изменений в ее код.
Наконец, нам потребовалось слишком много времени для того, что бы понять, что наши цели, заключающиеся в упрощении системы, лучшим образом формулируются с использованием языка архитектуры. Как только мы начали говорить об архитектуре вместо абстрактного упрощения, мы обзавелись гораздо лучшим фреймворком для принятия решений о добавлении и удалении возможностей с лучшими способом взаимодействия для обоснования этих решений.
18.6. Заключение
Puppet является одновременно простой и сложной системой. Эта система состоит из множества работающих частей, но они достаточно слабо связаны друг с другом и каждая из них значительно изменилась с момента начала развития проекта в 2005 году. Это фреймворк, который может использоваться для решения любых типов задач, связанных с конфигурацией, но при этом также простое и доступное приложение.
Наш будущий успех заключается в развитии простого и стабильного фреймворка и поддержании простоты использования приложения в ходе расширения его возможностей.
Вернуться к началу статьи.