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

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

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

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 — исправления ошибок и незначительные улучшения.