Как организовать безопасное и управляемое хранение исходного кода

Как мы подходим к хранению исходного кода

Хранение исходного кода — это не просто вопрос git-репозитория. Это вопрос управляемости, зрелости процессов и устойчивости вашей разработки. Мы рассматриваем хранение исходного кода как часть архитектуры управления цифровыми активами и как фундаментальную опору для устойчивых DevOps-процессов. Подробнее об этом в глоссарии терминов.

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

Зачем подход к хранению кода важен

  • Исходный код — стратегический актив проекта. Его потеря или утечка может означать потерю контроля над продуктом.
  • Управляемое хранение снижает технические и юридические риски.
  • Отстроенные процессы хранения кода формируют зрелую инфраструктуру разработки и доверие со стороны заказчика.
  • Грамотно выстроенная система управления исходным кодом позволяет минимизировать технический долг и упростить переход между подрядчиками.

 

Почему «доступ к Git» не обязателен для заказчика

  • Git — инструмент команды, а не заказчика. Мы обеспечиваем результаты, а не раскрытие внутренних механизмов.
  • Git-доступ — это не равноценный контроль. Управление доступом реализовано через защищённые ветки, контроль версий и формализованную передачу пакета.
  • Заказчик получает то, что имеет смысл с точки зрения контроля: номер коммита, артефакты, отчёты, акты приёма-передачи.
  • Это снижает риски: доступ к Git не означает контроль. Контроль обеспечивается архитектурой процессов.

Как мы структурируем хранение исходного кода

Внутренняя архитектура репозитория основана на best practices Git и принципах архитектуры DevOps.

Ветки и окружения

  • Основная ветка (main или master) — отражает стабильную, протестированную версию продукта.

  • Разработка (develop или dev) — активная зона интеграции новых функций.

  • Функциональные ветки (feature/*) — используются для изолированной разработки.

  • Релизные (release/*) и хотфиксы (hotfix/*) — привязаны к конкретным версиям и инцидентам.

Такая структура помогает отслеживать изменения, формировать тестовые окружения и поддерживать предсказуемость.

Релизы и версии

  • Каждый стабильный релиз помечается тегом, например: v1.0.0, v1.1.3, v2.0.0-beta.

  • К релизу обязательно прилагается:

    • Changelog — перечень изменений;

    • описание состава — что вошло, что изменено, что удалено;

    • commit ID — идентификатор контрольной точки.

Версионирование позволяет однозначно зафиксировать результат и обеспечивает юридическую чёткость при передаче.

Документация в коде

  • README — описание проекта, установки, ключевых концепций.

  • CONTRIBUTING.md — рекомендации и правила для разработчиков.

  • CHANGELOG.md — история версий.

  • LICENSE / NOTICE — условия использования и права.

Документация встроена в структуру хранения и обновляется в рамках процесса, а не задним числом.

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

  • Права доступа реализуются через CI/CD-политику, SSH-ключи и журналирование — всё это часть защищённой DevOps-инфраструктуры.

  • Роли разграничены: разработка, ревью, запуск CI/CD, аудит и поддержка.

  • Ветки защищены: изменения возможны только через Merge Request и код-ревью.

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

  • Ключи API, токены и другие чувствительные данные никогда не хранятся в коде — они вынесены в защищённые хранилища, такие как Vault.

Архитектура доступа обеспечивает как прозрачность действий, так и отказоустойчивость в случае сбоев или замены участников.

Что получает заказчик вместо доступа к Git

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

  • Архив исходного кода с зафиксированным коммитом (commit ID).
  • Документация: состав, версия, инструкция по сборке.
  • Акты приёма-передачи исходного кода.
  • Возможность провести аудит с внешним консультантом при необходимости.

Архитектура процессов хранения, сборки и передачи исходного кода

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

Фокус сделан на управляемости, прозрачности и разделении контуров ответственности — между разработчиком, техническим исполнителем и заказчиком.

Эта модель иллюстрирует архитектуру хранения и передачи исходного кода, построенную на принципах контроля версий, DevOps и юридической прозрачности.

sources-development-customer.png

Схема архитектуры хранения, сборки и передачи исходного кода

Что делает эту схему полезной для бизнеса?

Такое представление особенно важно при формализации передачи прав, аудите или переходе к устойчивой модели DevOps-инфраструктуры.

 

Схема разделена на три уровня, соответствующих ключевым стадиям:

Group 34316.svg

Производственная среда Исполнителя

На этом уровне размещён Git-сервер (например, GitLab, GitHub или другой), который используется как централизованное хранилище кода и история изменений. Отсюда запускаются автоматические пайплайны (CI/CD), реализующие сборку, тестирование и проверку безопасности. Все чувствительные параметры (секреты, ключи, конфигурации) хранятся отдельно — это повышает безопасность и воспроизводимость сборки.

sources-dev-cicd.png

Group 34317.svg

Поставка Заказчику (Delivery)

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

sources-delivery.png

Group 34317.svg

Эксплуатация (Prod)

После приёмки артефакты из хранилища передаются в инфраструктуру заказчика — чаще всего это продовый кластер Kubernetes. Развёртывание может быть выполнено как автоматически (по принципу GitOps или через CI/CD), так и вручную, с использованием предоставленных инструкций. В этой зоне ответственность переходит на сторону заказчика — важно, чтобы все полученные компоненты были воспроизводимы и документированы.

sources-prod.png

Сценарии: когда особенно важно правильное хранение кода

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

analys2.svg

Смена подрядчика

Легко передать контроль, не теряя историю и структуру.

Group 34313.svg

Рост команды

У новых участников есть документация и история.

Group 34312.svg

Аудит / сертификация

Легко доказать управляемость и безопасность.

doc.svg

Инцидент или баг

Быстрый откат или анализ по истории изменений.

Практическая ценность для бизнеса

  • Надёжность — риск потери кода или контроля минимален.

  • Прозрачность — можно получить чёткий ответ: где что лежит, кто что делал.

  • Адаптивность — подход легко масштабируется под рост команды или переход на другую инфраструктуру.

  • Контролируемость — вы знаете, что ваш код хранится по правилам, даже если вы не видите Git напрямую.

  • Устойчивость — процессы не завязаны на конкретных людей или подрядчиков.

  • Юридическая определённость — вы получаете формализованную передачу кода, соответствующую правовым требованиям.

Что дальше

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

Напишите нам, чтобы обсудить ваш контекст и подобрать адаптивный подход.

17.05.2025