Системы управления конфигурациями SCM (Software Configuration Management)

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

Для предотвращения таких сценариев существуют системы управления конфигурациями (SCM, или Software Configuration Management). Это комплекс инструментов и процессов, обеспечивающих порядок, предсказуемость и контроль на всех этапах жизненного цикла ПО (программного обеспечения).

И именно они позволяют командам работать слаженно, а бизнесу — быть уверенным в качестве и стабильности продукта.

Содержание
  1. Что такое SCM
  2. Появление первых систем управления конфигурациями SCM
  3. Расшифровка системы управления конфигурациями SCM (Software Configuration Management)
  4. Что означает система управления конфигурациями
  5. Методика и принципы работы
  6. Примеры из практики
  7. Лучшие российские системы для управления конфигурациями
  8. Efros Config Inspector
  9. Атом.Порт
  10. Hydra SCM
  11. Codekeeper
  12. X-Config
  13. Осмакс
  14. Зодиак АйТиЭм
  15. Выполняемые функции
  16. Версионирование ПО
  17. Отслеживание изменений конфигурации
  18. Контроль доступа и прав пользователей
  19. Аудит и журналирование изменений
  20. Восстановление предыдущих версий ПО
  21. Внедрение
  22. Анализ текущего состояния процессов разработки
  23. Выбор подходящей системы управления конфигурациями
  24. Настройка системы и интеграционные работы
  25. Обучение команды разработчиков и администраторов
  26. Мониторинг производительности и улучшения системы
  27. Тенденции на рынке
  28. Широкое распространение CI/CD-платформ и непрерывной доставки
  29. Актуальность подходов DevOps и контейнеризации приложений
  30. Растущая роль облаков и гибридных инфраструктур
  31. Применение современных методов защиты и шифрования данных
  32. Эволюция распределенных систем контроля версий
  33. Системы управления конфигурациями SCM: подводим итоги

Что такое SCM

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

Что такое SCM
Архитектура системы управления конфигурациями (SCM) и взаимодействие её компонентов

Появление первых систем управления конфигурациями SCM

История SCM началась в 1970-х — аккурат вместе с ростом сложности программных проектов: когда код перестал помещаться на перфокартах и стал храниться на магнитных лентах и дисках, возникла необходимость в контроле его изменений.

Первые «подобия» SCM были примитивны и часто сводились к банальному и ручному копированию исходников с добавлением к именам дат и версий.

Серьезные сдвиги же произошли в 1980-х — с появлением первых инструментов SCCS (Source Code Control System) и RCS (Revision Control System). Они позволяли хранить разные версии, при этом сильно экономя дисковое пространство.

Расшифровка системы управления конфигурациями SCM (Software Configuration Management)

Система управления конфигурациями — совокупность процессов, политик и инструментов, которые управляют всеми аспектами проекта.

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

SCM-системы применяются для решения задач, связанных с разработкой. Если конкретнее, то для обеспечения целостности и согласованности компонентов, контроля над изменениями, организации работы команды, а также для воспроизведения любой из предыдущих сборок. Последнее пригодится, если окажется, что последняя версия работает плохо (или не работает вовсе).

Что означает система управления конфигурациями

Термин «система» здесь следует понимать в двух контекстах:

  • Во-первых, это организационная система, то есть набор правил, регламентирующих, кто, когда и как может вносить изменения.
  • Во-вторых, это техническая система, то есть конкретное программное обеспечение, которое автоматизирует процессы.

Успех в управлении конфигурациями достигается при симбиозе обеих составляющих.

Методика и принципы работы

Работа SCM строится на следующих принципах:

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

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

Примеры из практики

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

  • Совместная работа над новой функцией. Два разработчика работают над одной и той же частью кода. SCM-система автоматически обнаруживает конфликтующие изменения при попытке слияния и предлагает инструменты для ручного разрешения, предотвращая «порчу» кода.
  • Оперативное исправление критической ошибки на стадии продакшена. На рабочей версии была обнаружена уязвимость. Благодаря SCM команда может мгновенно «откатиться» на стабильную базовую линию последнего релиза, минимизируя простой. Параллельно в отдельной ветке ведется работа по исправлению этой ошибки.
  • Воспроизведение старой сборки для аудита. К компании поступает претензия по работе программы, скажем, версии, выпущенной год-два назад. SCM позволит восстановить исходный код, конфигурации и зависимости, которые использовались для сборки именно той версии.

Лучшие российские системы для управления конфигурациями

Ниже — лучшие отечественные системы для управления конфигурациями программного обеспечения.

Efros Config Inspector

Efros Config Inspector

Efros Config Inspector — продукт от «Газинформсервис» — компании, специализирующейся на решениях для информационной безопасности. Конкретно это решение предназначено для управления конфигурациями сетевой инфраструктуры и ориентировано на средний и крупный бизнес, телеком-операторов и государственные организации.

Преимущества Efros Config Inspector:

  • Централизованный контроль и синхронизация действий для персонала и подрядчиков.
  • Оперативное выявление инцидентов безопасности и диагностика сбоев в работе.
  • Глубокая аналитика и наглядная визуализация состояния сети в реальном времени.
  • Гибкость и расширяемость за счет поддержки специфического оборудования (АСУ ТП, SCADA) и создания пользовательских проверок.

Недостатки Efros Config Inspector:

  • Как и у многих комплексных продуктов для мониторинга, требуется время на первоначальное развертывание и глубокое освоение всего функционала.

Что говорят пользователи:

Отзыв Оценка
«После внедрения утилиты мы наконец получили полную картину происходящего в сети. Система оповещений хороша. Позволяет нам реагировать на проблемы до того, как те повлияют на внутренние процессы». 4.7/5
«Мощный инструмент для аудита и приведения конфигураций к единому стандарту. Первоначальная настройка модулей проверок потребовала усилий, но, оценивая в ретроспективе, результат того стоил». 4.5/5

Атом.Порт

Атом.Порт

Атом.Порт — разработка «Гринатома», предназначенная для автоматизированной миграции и управления гибридной инфраструктурой рабочих станций (на ОС Windows и Linux). Решение ориентировано на ускорение импортозамещения и централизованное администрирование в крупных организациях.

Преимущества Атом.Порт:

  • Высокая скорость развертывания — инвентаризация рабочих мест за 2 минуты и одновременная миграция до 300 АРМ, причем под управлением одного специалиста.
  • Централизованное управление смешанной инфраструктурой (Windows, Astra Linux, ALT Linux, Ред ОС) из одной консоли.
  • Возможность проведения миграции без физического присутствия специалиста. В нерабочее время в том числе.

Недостатки Атом.Порт:

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

Что говорят пользователи:

Отзыв Оценка
«Миграция с Windows на Linux для сотен рабочих мест прошла в сжатые сроки. Возможность запускать процесс удаленно и массово — главное преимущество, на мой взгляд». 4.7/5
«Система мощная, хорошо автоматизирует рутину. Но первичную настройку и адаптацию сценариев под свои нужды лучше проводить с поддержкой». 4.3/5

Hydra SCM

Hydra SCM Nix

Hydra — не совсем SCM-система в традиционном понимании, хоть и работает по схожему принципу. Это сервер, построенный на основе функциональной модели развертывания Nix. Решение известно своей высочайшей воспроизводимостью и ориентировано на управление сборкой сложных проектов.

Преимущества Hydra SCM:

  • Любая сборка гарантированно повторяется на любой другой машине с идентичным результатом.
  • Система автоматически отслеживает и выстраивает граф зависимостей. При изменении компонента пересобираются все пакеты, которые от него зависят.
  • Весь процесс сборки описывается в Nix-файлах, которые можно версионировать.

Недостатки Hydra SCM:

  • Высокий порог входа — требуется понимание концепций Nix для правильной настройки.

Что говорят пользователи:

Отзыв Оценка
«После перехода на Hydra и настройки бинарного кэша забыли о проблемах. Воспроизводимость на 100%». 5/5
«Мощнейший инструмент для сборки всего, что можно описать на Nix». 4.8/5

Codekeeper

Codekeeper

Codekeeper — облачная платформа для защиты и управления исходным кодом, позиционирующая себя как решение для обеспечения безопасности и соответствия требованиям в распределенных командах разработки.

Преимущества Codekeeper:

  • Централизованное управление кодом. Утилита автоматически агрегирует репозитории из разных аккаунтов в единое хранилище.
  • Codekeeper позволяет создавать криптографически подписанные и неизменяемые снимки кода (снапшоты), которые фиксируют авторство и состояние исходного кода на конкретную дату.
  • Платформа использует сквозное шифрование и соответствует стандартам ISO 27001, SOC 2 Type II.

Недостатки Codekeeper:

  • Может оказаться избыточным для небольших бизнесов.
  • Несмотря на минус выше, Codekeeper решает не все технические задачи разработки: с его помощью нельзя осуществить слияние кода, например.

Что говорят пользователи:

Отзыв Оценка
«Codekeeper стал для нас спасением. Предоставить инвесторам снапшот кода за 5 минут — ну, это просто бесценно». 5/5
«Интеграция с GitHub прошла гладко. Но для настройки правил эскроу пришлось обратиться в поддержку. Ответили быстро, претензий не имеем». 4.5/5

X-Config

X-Config

X-Config — система управления безопасностью конфигураций программного обеспечения, предназначенная для построения непрерывного процесса контроля настроек ПО. Решение ориентировано на средний и крупный сегмент с комплексной инфраструктурой.

Преимущества X-Config:

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

Недостатки X-Config:

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

Что говорят пользователи:

Отзыв Оценка
«Внедрение X-Config позволило нам наконец навести порядок в конфигурациях серверов. Система отлично справляется с приоритизацией — у нас больше сотни серверов, и все работает нормально». 4.7/5
«Решение мощное, но потребовало время на освоение и настройку под наши процессы». 4.3/5

Осмакс

Осмакс

Осмакс — разработка компании «Т1 Иннотех», представляющая собой платформу для управления инфраструктурой в реальном времени. Решение ориентировано на средний и крупный бизнес, госучреждения и организации, активно осуществляющие импортозамещение.

Преимущества Осмакс:

  • Полный контроль над ИТ-ландшафтом — от инвентаризации оборудования и ПО до удаленного администрирования и поддержки пользователей.
  • Централизованное управление с поддержкой Windows, Linux и macOS.
  • Быстрое развертывание и бесшовная миграция с Microsoft SCCM без остановки процессов.
  • Высокая доступность благодаря архитектуре без единой точки отказа и механизмам автоматического восстановления.

Недостатки Осмакс:

  • Достаточно высокий порог входа. Из-за сложности интерфейса и обилия функций рядовым пользователям бывает сложно быстро начать эффективно работать.
  • Сложность персонализации. Система гибка, и это факт, однако внесение серьезных изменений в логику работы потребует высокой квалификации и может негативно сказаться на стабильности системы в будущем. Особенно это станет заметно при обновлениях.

Что говорят пользователи:

Отзыв Оценка
«Внедрили Осмакс примерно за неделю. Система позволила нам массово обновить ОС на всем парке устройств, что сэкономило уже недели работы». 4.9/5
«Функционал мощный, интерфейс удобный. Но для более тонкой настройки пришлось покопаться в документации. В принципе, проблем не возникло». 4.5/5

Зодиак АйТиЭм

Зодиак АйТиЭм

Zodiac ITM — решение для централизованного управления разнородной ИТ-инфраструктурой. Система позволяет администрировать парки устройств любого масштаба (например, рабочие станции, серверы, сетевое оборудование) с различными операционными системами и архитектурами.

Преимущества Zodiac ITM:

  • Эффективно работает как в небольших отделах, так и с парками в сотни тысяч устройств, — благодаря модульной и ролевой архитектуре.
  • Автоматически находит и идентифицирует все устройства в сети — от принтеров и сканеров до медиаустройств. Причем делает это даже без предварительной установки агента, используя ZeroConf-протоколы и сканирование портов.
  • Объединяет сценарии на PowerShell, Bash и других языках.
  • Гибко интегрируется в существующий ИТ-ландшафт благодаря поддержке открытых стандартов и различных протоколов управления.
  • Местная консоль предоставляет прямой доступ к RDP, VNC, SSH и Telnet-сессиям, позволяя решать задачи из любого места, где есть возможность открыть браузер.

Недостатки Zodiac ITM:

  • Потребует времени на первоначальное освоение и тонкую настройку для реализации всего заложенного потенциала.

Что говорят пользователи:

Отзыв Оценка
«Отличное решение для массового обновления ПО и контроля конфигураций. Автоматические группы — спасение для админа». 4.7/5
«Мощный функционал. Осваивать интерфейс поначалу непривычно, но результат того стоит». 4.5/5

Выполняемые функции

SCM-системы выполняют следующие функции.

Версионирование ПО

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

Версионирование — это в принципе основа для всех остальных функций SCM.

Отслеживание изменений конфигурации

SCM фиксирует не только «что» изменилось, но и «кто», «когда» и «почему» внес это изменение (благодаря привязке к тикетам). На выходе это обеспечивает отличную «прослеживаемость» и позволяет быстро находить источник(-и) проблемы.

Контроль доступа и прав пользователей

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

Аудит и журналирование изменений

Все действия пользователей фиксируются в журнале. Аудит-лог — незаменимый инструмент для расследования инцидентов и анализа производительности.

Восстановление предыдущих версий ПО

Благодаря полной истории версий и системе тегов SCM позволяет в любой момент собрать и развернуть любую предыдущую версию приложения. Это критически важно для исправления инцидентов в продакшене, когда нужно быстро «откатиться» на стабильный релиз.

Внедрение

Успешное внедрение SCM требует планирования. Подчас тщательного. Чтобы переход был гладким, а система принесла максимальную пользу, рекомендуется следовать нижеописанному плану.

Анализ текущего состояния процессов разработки

Сначала — диагностика.

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

Выбор подходящей системы управления конфигурациями

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

Здесь учитывается множество факторов: централизованная/распределенная модель, необходимость в монрепозитории (репозиторий, содержащий более одного логического проекта), а также общие требования к безопасности и размер бюджета.

Настройка системы и интеграционные работы

Выбранная система устанавливается и кастомизируется (персонализируется): определяются структура репозиториев, политика ветвления и права доступа. На этом этапе SCM также интегрируются с системами трекинга (отслеживания) задач.

Обучение команды разработчиков и администраторов

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

Мониторинг производительности и улучшения системы

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

SCM — «живой» инструмент, и он должен идти нога в ногу вместе с проектом.

Тенденции на рынке

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

Широкое распространение CI/CD-платформ и непрерывной доставки

SCM перестали быть просто хранилищем кода.

Сейчас они — центральный узел для CI/CD-процессов: любой коммит в репозиторий может автоматически запускать сборку, прогон тестов и развертывание в тестовые среды.

Актуальность подходов DevOps и контейнеризации приложений

В эпоху DevOps (методология, объединяющая разработку и эксплуатацию ПО, чтобы ускорить выпуск и повысить итоговое качество продуктов) ответственность за конфигурации лежит не только на разработчиках, но и на инженерах.

SCM распространилась на инфраструктуру как код: конфигурации Dockerfile, Kubernetes манифестов, Terraform-скриптов хранятся и версионируются в Git, обеспечивая согласованность и повторяемость сред.

Git — фундамент, позволяющий командам разрабатывать и версионировать код. Dockerfile — инструкция по сборке переносимого образа приложения, который инкапсулирует все его зависимости. Kubernetes-манифесты описывают, как этот образ вообще должен работать. А Terraform-скрипты позволяют декларативно управлять облачной инфраструктурой, на которой работает Kubernetes, обеспечивая воспроизводимость и контроль.

Растущая роль облаков и гибридных инфраструктур

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

Применение современных методов защиты и шифрования данных

Безопасность в SCM — на первом плане по важности.

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

Эволюция распределенных систем контроля версий

Распределенная модель, популяризированная Git, стала доминирующей.

Развитие идет в сторону улучшения работы с монрепозиториями (огромными репозиториями, содержащими код множества проектов) — улучшаются инструменты в духе Git LFS (для больших файлов) и специализированные SCM-системы как, например, Google Piper (для управления монрепозиториями в масштабах всей компании).

Системы управления конфигурациями SCM: подводим итоги

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

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

CIO-NAVIGATOR