Технические средства хранения кода и компиляции ПО*
Технические средства хранения кода и компиляции ПО*
Технические средства
хранения кода и компиляции ПО «ИДГОС»
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) — доступ на чтение/запись в соответствующие ветки;
- администратор
веб-сервера — доступ на чтение для целей развёртывания;
- специалист
по тестированию — доступ на чтение для получения сборок. feature
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
— исправления ошибок и незначительные улучшения.
