Технические средства хранения кода и компиляции ПО

Технические средства хранения кода и компиляции ПО

Технические средства хранения кода и компиляции ПО «ИДГОС»

1. Общие положения

1.1. Область применения документа

1.1.1. Настоящий документ описывает технические средства, используемые для хранения исходного текста и объектного кода, а также средства подготовки (сборки) программного обеспечения «ИДГОС» к развертыванию и эксплуатации.

1.2. Сведения о ПО

1.2.1. ПО «ИДГОС» — веб-сервис для формирования и подписания документов с использованием электронной подписи через интеграцию с ЕСИА (портал Госуслуг) с применением средств криптографической защиты информации «КриптоПро». Разработчик ПО: ООО «СИНТЕГРА».

1.3. Целевая аудитория

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

2. Средства хранения кода

2.1. Система контроля версий

2.1.1. Для хранения исходного текста и объектного кода ПО «ИДГОС» используется локальная система контроля версий Git.

2.1.2. В репозитории обеспечивается хранение следующих компонентов:

  • Исходный код клиентской части: файлы JavaScript, React-компоненты, стили, конфигурации сборки;
  • Исходный код серверной части: PHP-скрипты, шаблоны TWIG, конфигурации маршрутизации;
  • Объектный код (артефакты сборки): оптимизированные бандлы для браузера, скомпилированные ресурсы;
  • Конфигурационные файлы: настройки окружения, переменные среды, параметры деплоя;
  • Скрипты автоматизации: сценарии развёртывания, миграции БД, тестирования.

2.1.3. Организация репозитория предусматривает:

  • две основные ветки: main (продуктивная версия) и dev (стабильная разработка);
  • разработка ведётся в ветке dev, после проверки и тестирования изменения переносятся в ветку main;
  • при необходимости (например, при подключении дополнительных разработчиков) допускается создание временных веток для изоляции задач;
  • тегирование релизных версий в формате vX.Y.Z.

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

2.2. Доступ к репозиторию

2.2.1. Доступ к репозиториям предоставляется следующим категориям персонала:

  • руководитель проекта — полный доступ;
  • разработчики (JavaScript, PHP, Python) — доступ на чтение/запись в соответствующие ветки;
  • администратор веб-сервера — доступ на чтение для целей развёртывания;
  • специалист по тестированию — доступ на чтение для получения сборок.

2.2.2. Аутентификация в системе контроля версий осуществляется с использованием ключей SSH или токенов доступа с обязательным двухфакторным подтверждением.

3. Средства компиляции и сборки

В связи с веб-архитектурой ПО «ИДГОС», под «компиляцией» понимаются процессы транспиляции, минификации, бандлинга и подготовки кода к развёртыванию.

3.1. Пользовательская часть

3.1.1. Технические параметры клиентской части:

  • Язык программирования: JavaScript;
  • Библиотека интерфейса: React 18;
  • Архитектурный паттерн: MVVM;
  • Формат выходных данных: оптимизированные бандлы (JS, CSS), готовые к размещению.

3.1.2. Процесс сборки клиентской части включает:

  • выполнение команды сборки через пакетный менеджер (npm run build);
  • генерацию оптимизированных файлов в директорию сборки;
  • размещение файлов сборки на веб-сервере в директории, доступной для публикации.

3.2. Серверная часть

3.2.1. Технические параметры серверной части:

  • Язык программирования: PHP 7.4 / 8.x;
  • Шаблонизатор: TWIG;
  • Веб-сервер: Nginx;
  • СУБД: PostgreSQL;
  • ОС сервера: Linux Debian.

3.2.2. Подготовка серверной части к развёртыванию включает:

  • проверку синтаксиса PHP-кода;
  • валидацию шаблонов TWIG;
  • генерацию autoload-карт зависимостей (Composer);
  • применение миграций базы данных;
  • настройку прав доступа и конфигураций окружения.

3.3. Криптографические компоненты

3.3.1. ПО «ИДГОС» использует сторонние средства криптографической защиты информации «КриптоПро» через интеграцию со специализированным аппаратным носителем (защищённая флешка с ключами), имеющим разрешение на взаимодействие с ЕСИА.

3.3.2. Порядок работы: после авторизации пользователя через портал Госуслуг (ЕСИА) система обращается к аппаратному носителю. Ключи, хранящиеся на носителе, авторизуют получение верифицированных данных пользователя из ЕСИА для формирования документа. Подписание документа осуществляется ключами того же аппаратного носителя.

3.3.3. Особенности обработки данных:

  • персональные данные пользователя не хранятся в ПО «ИДГОС» — они используются только в момент формирования и подписания документа;
  • подписанный документ сохраняется в архиве сервиса на срок не более 24 часов, после чего автоматически удаляется.

3.3.4. Функционирование криптографических компонентов осуществляется в соответствии с документацией производителя ООО «КРИПТО-ПРО» и требованиями регуляторов (ФСТЭК, ФСБ).

4. Требования к техническому окружению

4.1. Аппаратные требования (серверная часть)

4.1.1. Минимальные требования:

  • Центральный процессор: 2 ядра;
  • Оперативная память: 2 ГБ;
  • Дисковое пространство: 20 ГБ;
  • Сетевой интерфейс: 100 Мбит/с.

4.1.2. Рекомендуемые требования:

  • Центральный процессор: 4+ ядра;
  • Оперативная память: 8+ ГБ;
  • Дисковое пространство: 100+ ГБ (с учётом логов и бэкапов);
  • Сетевой интерфейс: 1 Гбит/с.

4.2. Программные требования

4.2.1. Обязательные компоненты серверного окружения:

  • Операционная система: Linux Debian 11+;
  • Веб-сервер: Nginx 1.18+;
  • Интерпретатор PHP: 7.4 или 8.0+ с расширениями: mbstring, xml, curl, pgsql, openssl;
  • СУБД: PostgreSQL 12+;
  • Система контроля версий: Git 2.20+;
  • Средства криптозащиты: КриптоПро CSP 5.0+ для Linux;
  • TLS-сертификаты: действующие сертификаты от доверенного УЦ.

4.2.2. Пользовательские устройства (для подписания документов):

  • Мобильные устройства: Android 5.0+, iOS 12+;
  • Персональные компьютеры: Windows, macOS (доступ через современный браузер);
  • Экран: цветной сенсорный экран от 4.5 дюймов (HD и выше) для мобильных устройств.

4.3. Рабочие места разработчиков

4.3.1. Для разработки и сборки ПО допустимо использование ОС: Windows 10/11, macOS 12+, Linux (Debian/Ubuntu).

4.3.2. Обязательные инструменты на рабочем месте разработчика:

  • редактор кода / IDE (VS Code, PhpStorm и др.);
  • среда выполнения Node.js 16+ (для сборки frontend);
  • PHP CLI и Composer;
  • Git-клиент;
  • доступ к тестовому стенду и репозиторию.

5. Процессы сборки и развёртывания

5.1. Сборка ПО

5.1.1. Сборка ПО выполняется на локальном рабочем месте разработчика.

5.2. Стандартный процесс сборки

5.2.1. Стандартный процесс сборки включает следующие шаги:

  1. Получение актуальной версии кода из репозитория (по тегу или ветке) на локальный компьютер;
  2. Установка зависимостей (npm install / composer install);
  3. Сборка клиентской части (npm run build);
  4. Подготовка серверной части (валидация, миграции БД);
  5. Сохранение артефактов сборки в репозиторий (при наличии изменений в компонентах);
  6. Размещение файлов на веб-сервере в директории домена.

5.3. Развёртывание в среду

5.3.1. Развёртывание в продуктивную среду:

  • осуществляется администратором веб-сервера;
  • включает резервное копирование текущей версии перед обновлением;
  • завершается проверкой работоспособности ключевых сценариев.

6. Безопасность и резервное копирование

6.1. Контроль доступа и логирование

6.1.1. Все операции с кодом и артефактами сборки выполняются с обязательным логированием и контролем доступа.

6.2. Резервное копирование

  • исходный код — обеспечивается средствами системы контроля версий (распределённое хранение);
  • объектный код и конфигурации — еженедельное полное копирование на выделенное хранилище;
  • базы данных — ежедневное инкрементальное копирование с ежемесячной проверкой восстановления.

6.3. Хранение чувствительных данных

  • токены API, ключи доступа хранятся в зашифрованном виде;
  • доступ к ним предоставляется по принципу минимальных привилегий;
  • сроки действия TLS-сертификатов отслеживаются с уведомлением не менее чем за 30 дней до истечения;
  • сроки действия сертификатов ЭП на аппаратном носителе отслеживаются с уведомлением не менее чем за 30 дней до истечения.

7. Требования к персоналу

7.1. Допуск к работе

7.1.1. К работе со средствами хранения и сборки ПО «ИДГОС» допускаются лица, прошедшие инструктаж и имеющие практические навыки работы с указанными технологиями.

7.2. Требования к разработчику

7.2.1. Разработчик должен владеть:

  • кроссбраузерной и адаптивной вёрсткой;
  • программированием на JavaScript, PHP 7/8;
  • библиотекой React JS;
  • работой с системой контроля версий Git;
  • интеграцией с внешними API (ЕСИА, КриптоПро, биллинговые системы).

7.3. Требование к администратору

7.3.1. Администратор должен владеть:

  • администрированием ОС Linux;
  • настройкой и сопровождением Nginx, PHP-FPM;
  • администрированием СУБД PostgreSQL;
  • управлением TLS-сертификатами;
  • настройкой КриптоПро CSP на Linux;
  • работой с логами, системами мониторинга и резервного копирования.

8. Изменения и сопровождение

8.1. Фиксация изменений

8.1.1. Все изменения в исходном коде фиксируются в системе контроля версий с обязательным комментарием и ссылкой на задачу.

8.2. Тестирование перед внедрением

8.2.1. Перед внедрением в продуктивную среду изменения проходят:

  • код-ревью;
  • тестирование на изолированном стенде;
  • нагрузочное тестирование (для изменений, влияющих на производительность).

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

8.3.1. Версионирование ПО осуществляется по схеме major.minor.patch, где:

  • major — изменения, нарушающие обратную совместимость;
  • minor — новая функциональность с сохранением совместимости;
  • patch — исправления ошибок и незначительные улучшения.