ТРЕБОВАНИЯ
К ТЕХНОЛОГИЯМ
Приведенные технологические требования и рекомендуемый для применения в разработке технологический стек направлены на реализацию архитектурных требований к разработке современных цифровых продуктов.
Рекомендуемый стек состоит из наиболее популярных в индустрии инструментов, открытых и/или имеющих альтернативу в Едином реестре российского ПО. Это означает, что данный стек является наиболее зрелым с точки зрения надежности, безопасности применяемых технологий, требований к импортозамещению и наличия на рынке труда специалистов, способных поддерживать и развивать цифровой продукт.
КОНТЕЙНЕРИЗАЦИЯ
01. КОНТЕЙНЕРИЗАЦИЯ
  1. Цифровой продукт поставляется в виде цифровых образов и развертывается для исполнения в контейнеры
  2. Цифровой продукт поддерживает масштабируемость путем работы одновременно нескольких экземпляров контейнеров
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Docker/Cri-o-образы
  • Kubernetes — среда управления контейнерами
  • Helm — система управления приложениями на Kubernetes
  • Аналоги
ИНФРАСТРУКТУРА КАК КОД
02. ИНФРАСТРУКТУРА КАК КОД
Развертывание любой инфраструктуры и окружения, необходимых для функционирования цифрового продукта, автоматизировано с помощью скриптов, которые можно реиспользовать для других стендов.
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Ansible — инструмент управления развертыванием
  • Terraform — система управления инфраструктурой
  • Аналоги
БАЗЫ ДАННЫХ
03. БАЗЫ ДАННЫХ
  1. Для общих задач хранения данных и доступа к ним используются реляционные СУБД
  2. Для специфических задач (кэширования, операций в памяти, построения поисковых полнотекстовых систем, хранения данных логов и мониторинга) используются специальные базы данных
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • PostgreSQL — реляционная СУБД
  • Apache Ignite/Tarantool — вычисления в памяти (in-memory)
  • Hazelcast/Infinispan — кэш
  • Elasticsearch — поиск, логи операций
  • ClickHouse — аналитика 
  • Аналоги
СЕРВИСЫ BACKEND
04. СЕРВИСЫ BACKEND
  1. У цифрового продукта должна присутствовать ярко выраженная backend-часть, реализующая логику приложения и взаимодействие с данными
  2. Backend-часть цифрового продукта реализуется в виде одного или нескольких слабосвязанных сервисов, реализованных на одном из языков программирования из технологического стека
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Java (Spring Framework) — сервисы backend
  • Go — высоконагруженные сервисы
  • Python — сервисы чат-ботов и нейросетей
ВЗАИМОДЕЙСТВИЕ ЧЕРЕЗ УНИФИЦИРОВАННЫЕ ПРОТОКОЛЫ
05. ВЗАИМОДЕЙСТВИЕ ЧЕРЕЗ УНИФИЦИРОВАННЫЕ ПРОТОКОЛЫ
  1. Сервисы/микросервисы backend взаимодействуют друг с другом по протоколам, независимым от конкретной реализации сервиса:
    • синхронно — через документированный API;
    • асинхронно — через брокера сообщений.
  2. Асинхронное взаимодействие (event-driven подход) наиболее предпочтительно, так как устраняет излишнюю связанность сервисов друг с другом
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • REST, gRPC, SOAP — стандартные подходы к проектированию синхронных API
  • AMQP — протокол асинхронного взаимодействия
  • Kafka, Rabbit, Active MQ — брокеры сообщений
  • Swagger (OpenAPI) — формат описания контрактов API
ПРОЦЕССНЫЙ ПОДХОД
06. ПРОЦЕССНЫЙ ПОДХОД
  1. Сложные вариативные бизнес-процессы и операции следует реализовывать с помощью BPM-процессов
  2. Каждый экземпляр процесса должен быть наблюдаем, управляем, иметь точки остановки и отката
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Сamunda BPM
  • N8N 
  • Аналоги
НАСТРАИВАЕМАЯ ЗАЩИЩЕННАЯ МАРШРУТИЗАЦИЯ ВЫЗОВОВ
07. НАСТРАИВАЕМАЯ ЗАЩИЩЕННАЯ МАРШРУТИЗАЦИЯ ВЫЗОВОВ
  1. Сервисы цифрового продукта должны поддерживать работу через защищенные шлюзы (API Gateway) при взаимодействии с UI, внешними системами или друг с другом
  2. На каждом из шлюзов (API Gateway) может быть настроена собственная политика доступа к сервисам, маршрутизации и балансировки
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Kubernetes/Spring/Consul — маршрутизация, API Gateway
  • Nginx — балансировщики
ВИЗУАЛЬНЫЙ ИНТЕРФЕЙС
08. ВИЗУАЛЬНЫЙ ИНТЕРФЕЙС (FRONTEND)
  1. Визуальная часть цифрового продукта (UI) должна быть реализована на основе тонкого клиента для браузера и/или приложений для мобильных устройств (это снижает затраты на установку и актуализацию версий UI цифрового продукта у пользователей)
  2. UI поддерживает адаптивность — корректное отображение на устройствах различных размеров
  3. UI цифрового продукта должен уметь «встраиваться» (например, по технологии виджетов) в другое (главное) приложение
  4. Цифровой продукт в некоторых случаях должен позволять встраивать в свой UI виджеты других цифровых продуктов
  5. Визуальный интерфейс цифрового продукта в разумных пределах поддерживает кастомизацию, например, смену тем
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • TypeScript — язык программирования
  • Angular/React — фреймворки
  • Kotlin — приложения Andriod
  • Swift — приложения iOS и аналоги
ВЗАИМОДЕЙСТВИЕ ВИЗУАЛЬНОГО ИНТЕРФЕЙСА С СЕРВЕРНОЙ ЧАСТЬЮ
09. ВЗАИМОДЕЙСТВИЕ ВИЗУАЛЬНОГО ИНТЕРФЕЙСА С СЕРВЕРНОЙ ЧАСТЬЮ
  1. Визуальная часть цифрового продукта (UI) должна взаимодействовать с серверной частью (backend) по технологии «тонких каналов», с поддержкой сжатия трафика, кеширования, работы в нестабильных сетевых условиях
  2. Взаимодействие должно осуществляться по защищенным протоколам, исключающим искажение или подмену трафика
  3. Количество запросов к серверу должно быть минимизировано — доступ к различным объектам, сервисам, необходимым для отображения в интерфейсе, должен агрегироваться в специальных API-методах на стороне сервера
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Nginx и аналоги — балансировка, маршрутизация, кэширование ресурсов
  • Инструменты API Gateway, специальный интерфейсные API-методы — проксирование и агрегирование запросов
  • Протокол HTTPS и аналоги — защита трафика
  • Технологии SPA и AJAX — экономия объема трафика
ЛОГИРОВАНИЕ, ДИАГНОСТИКА, ТРАССИРОВКА ОПЕРАЦИЙ
10. ЛОГИРОВАНИЕ, ДИАГНОСТИКА, ТРАССИРОВКА ОПЕРАЦИЙ
  1. Цифровой продукт должен обеспечивать сбор логов, диагностических метрик, показателей «здоровья» работы сервисов и бизнес-операций
  2. Должна быть возможность предоставления и хранения этой информации в централизованных, отдельно масштабируемых хранилищах
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Fluentbit/logstash — сборщик логов
  • Elasticsearch, Prometheus — хранилища логов и метрик
  • Kibana/Grafana — аналитика, визуальное отображение
АУТЕНТИФИКАЦИЯ И АВТОРИЗАЦИЯ
11. АУТЕНТИФИКАЦИЯ И АВТОРИЗАЦИЯ
  1. Поддержка протокола OAuth 2.0
  2. Поддержка технологии единого входа (SSO)
  3. Поддержка работы с системами управления доступом (IDM)
  4. Поддержка протокола LDAP, в том числе защищенных реализаций
  5. Поддержка ролевой и атрибутной модели доступа к объектам цифрового продукта
РЕКОМЕНДУЕМЫЕ ИНСТРУМЕНТЫ:
  • Digital Q.Security — ролевая и атрибутная модели доступа к объектам цифрового продукта
  • Реализация поддержки протокола OAuth 2.0 на уровне фреймворков для backend и frontend-приложений (например, Spring Security)
  • Keycloak — поддержка технологии единого входа и управления доступом
  • Apache Directory Studio, OpenLDAP — реализации LDAP 
  • Аналоги
ОСТАЛИСЬ ВОПРОСЫ?
Напишите нам, и мы обязательно вам ответим

*поля обязательные к заполнению