Роль процесса управления версиями в общем процессе конфигурационного управления программными проектами

А.В. Юрченко
ЗАО «ЕС-лизинг»,
г. Москва


Термины управление версиями (versioncontrol) и управление конфигурациями (configurationmanagement) часто используются взаимозаменяемо, хотя иногда их рассматривают как две разные дисциплины. На самом деле, характеристики процесса управления версиями являются частью хорошо поставленного процесса управления конфигурациями. В данной работе рассмотрены эти два понятия и показано, как они могут успешно применяться для решения проблем, с которыми на сегодняшний день сталкиваются специалисты в области информационных технологий, пытаясь управлять своей инфраструктурой по разработке приложений.

Для того чтобы понять о чем идет речь, необходимо сначала дать определения обсуждаемым терминам. Определение для конфигурационного управления:

Конфигурационное управление представляет собой систему, набор процессов, или инструментов, которые документируют все компоненты, объединенные в более крупные сущности. Конфигурационное управление позволяет надежно производить сборку и тиражирование этих сущностей, используя для этого набор своих внутренних связанных компонентов и описание всех взаимосвязей между документируемыми компонентами. Как дисциплина, конфигурационное управление находит широкий спектр применений, от разработки программного обеспечения, до управления сложными промышленными предприятиями.

Хотя управление версиями и относится к конфигурационному управлению, оно специализируется на изменениях во времени.

Управление версиями представляет собой процесс, который документирует базовые линии (одновременный срез версий всех элементов в конкретный момент) компонента, или модуля, а так же хранит все редакции, или изменения для этого компонента в базе данных для дальнейшего использования. Возможности процесса управления версиями заключаются в воспроизведении точного состояния компонента в любой момент времени.

Таким образом, можно сделать вывод, что конфигурационное управление предоставляет полный процесс для того, чтобы знать, как фрагменты сложной системы собирать вместе. Управление версиями предоставляет возможность увидеть, как менялись фрагменты этой сложной системы с течением времени, а так же возможность восстановления конкретного состояния системы в заданный момент времени. Поэтому управление версиями является важной составляющей процесса управления конфигурациями.

В последнее время конфигурационное управление и управление версиями применяются для управления набором элементов, которые составляют прикладной уровень корпоративных информационных технологий. И применение этих дисциплин происходит при любом удобном случае. Рассмотрим прикладной уровень в центре хранения и обработки данных в отделе информационных технологий (ИТ) предприятия. Он, как правило, состоит из серверов приложений, Web серверов, баз данных и промежуточного (вспомогательного) программного обеспечения. Все это обычно поставляется разными производителями программного обеспечения (ПО). Одновременно с тем, что такой подход выбора самого лучшего ПО разного назначения дает гибкость в управлении, из-за него так же приходится иметь дело со сложными задачами – как именно все эти различные программные элементы конфигурируются, обновляются, или изменяются и разворачиваются на протяжении всего жизненного цикла. Каждый программный элемент из этого набора имеет множество различных конфигурационных файлов, каждый из которых, в свою очередь, имеет сотни параметров, которые можно менять для настройки и управления ПО. Существует множество элементов, составляющих прикладной уровень, и множество экземпляров этих приложений прикладного уровня. Многие из них находятся в разработке, другие предназначены для разработки, проверки качества, поддержки, исправления ошибок и т.п. Если подсчитать количество индивидуальных настроек, или конфигурационных параметров для всех элементов в прикладном уровне, на всех этапах жизненного цикла, то это число может достичь десятков тысяч. Всем этим можно управлять вручную на приемлемом уровне, только если рабочая среда была настроена один раз и оставлена в режиме «настроил и забыл». Тем не менее, опыт многих организаций показывает, что изменения в таких средах происходят довольно часто. В организации с количеством человек около 15 в среднем происходит около 400 изменений конфигурации рабочей среды ежемесячно. Следовательно, ручные методы управления больше не применимы.

Управление изменениями в описанной рабочей среде – это тип задачи, который хорошо подходит для автоматизации. Чтобы использовать автоматизированное управление конфигурациями и управление версиями в отделе ИТ предприятия, инфраструктура рабочей среды прикладного уровня должна включать:

Получение информации. Необходимо собирать конфигурационные параметры, или настройки со всей инфраструктуры программных элементов и организовывать их в базу данных для дальнейшего использования.

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

Изменение стандартов и политик. Эти стандарты могут быть использованы для создания шаблонов под конкретные элементы прикладного уровня (например, стандартная конфигурация для определенного типа сервера приложений), или для целого набора приложений (например, стандартная сборка для сервера приложений, Web сервера, базы данных и промежуточного ПО).

Аудит и отчетность. Дисциплина управления конфигурациями должна предоставлять автоматизированную отчетность об изменениях. По мере того, как происходят изменения с конфигурационными параметрами, эти отчеты могут сохраняться и быть доступными отделу ИТ предприятия для целей аудита.

При рассмотрении автоматизации процессов управления конфигурациями и управления версиями, менеджерам следует выполнять следующие действия:

- Собрать всю информацию компонентного уровня в единое хранилище данных;

- Обеспечить возможность просматривать зависимости между различными конфигурационными элементами;

- Установить контроль над стратегиями представления, тестирования, использования изменений;

- Обеспечить детальное журналирование и отчетность;

- Позволять откатывать изменения (отменять их), если из-за них случаются непредвиденные последствия.

Управление версиями настроечных параметров могло бы выступить гарантией безопасности для процесса управления изменениями в среде управления конфигурациями. Управления конфигурациями в явном виде регулирует процесс управления изменениями. Весь же процесс (управления конфигурациями и управления версиями) постоянно обрастает новыми свойствами, относящимися к версионности. В итоге, это приведет к тому, что все изменения, записанные таким способом, позволят восстанавливать и устанавливать более ранние версии конфигурационных настроек. Отсюда вытекает неоспоримое преимущество такого процесса, когда внесенные и развернутые изменения становятся нежелательными из-за своего влияния на производительность или стабильность процесса разработки. Эти версионные свойства так же приводят к положительным результатам в ситуациях, когда необходимо проводить аудит соответствия, или восстановление после сбоя. Когда проверяют систему, может понадобиться протестировать различные ее версии. Надежный механизм управления версиями, встроенный в процесс управления конфигурациями, позволяет восстановить точную копию инфраструктуры проекта за любой момент времени. Кроме того, данная возможность предоставляет явные преимущества во время восстановления настроек после сбоя.

Решения по конфигурационному управлению могут играть значительную роль в управлении изменениями в программных проектах. Механизм управления версиями, с возможностями развивать требования к проекту, моделировать изменения, изменять политики управления, вносит дополнительные выгоды в процесс управления конфигурациями, благодаря механизмам перестройки инфраструктуры для обеспечения производительности, стабильности, восстановления после сбоев, совместимости. 


Назад к списку