Технические средства хранения кода и компиляции ПО
Технические средства хранения кода и компиляции ПО
Технические средства хранения кода и компиляции ПО «ИДГОС»
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. Стандартный процесс сборки включает следующие шаги:
- Получение актуальной версии кода из репозитория (по тегу или ветке) на локальный компьютер;
- Установка зависимостей (npm install / composer install);
- Сборка клиентской части (npm run build);
- Подготовка серверной части (валидация, миграции БД);
- Сохранение артефактов сборки в репозиторий (при наличии изменений в компонентах);
- Размещение файлов на веб-сервере в директории домена.
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 — исправления ошибок и незначительные улучшения.
