Исторически IDM вырос из монолита на Python/Django с PostgreSQL. Этот код продолжает работать, а отдельные части мы постепенно выносим в сервисы на Go и Kotlin: согласования, работу с политиками, синхронизацию доступов, аудит.Основной стек сейчас такой:
PostgreSQL — основное транзакционное хранилище, Redis — кеширование.
Celery — фоновые задачи в Python-части. В новых сервисах для длительных процессов используем Temporal: согласование может ждать решения человека, обрабатывать таймеры и повторять операции при технических сбоях.
gRPC/Protobuf — взаимодействие новых сервисов, Kafka и Logbroker — асинхронные события. Для интеграции подключаемых систем и пользовательской автоматизации есть HTTP API.
Kotlin + Spring Boot используются, например, в сервисе управления модулями политик.- Развёртывание контейнерное, во внутренней платформе Yandex Deploy.
Отдельная инженерная часть — исполнение пользовательских правил согласования на Python. Для них есть изолированная среда с ограничениями ресурсов и доступом к данным через ограниченный API. В историческом механизме изоляция реализована через Porto-контейнеры.При этом авторизация конкретных запросов остаётся в подключённых системах. IDM управляет жизненным циклом доступов и сверяет состояние, поэтому обращаться к нему при каждом действии пользователя не требуется.
Добрый день!
Исторически IDM вырос из монолита на Python/Django с PostgreSQL. Этот код продолжает работать, а отдельные части мы постепенно выносим в сервисы на Go и Kotlin: согласования, работу с политиками, синхронизацию доступов, аудит.Основной стек сейчас такой:
PostgreSQL — основное транзакционное хранилище, Redis — кеширование.
Celery — фоновые задачи в Python-части. В новых сервисах для длительных процессов используем Temporal: согласование может ждать решения человека, обрабатывать таймеры и повторять операции при технических сбоях.
gRPC/Protobuf — взаимодействие новых сервисов, Kafka и Logbroker — асинхронные события. Для интеграции подключаемых систем и пользовательской автоматизации есть HTTP API.
Kotlin + Spring Boot используются, например, в сервисе управления модулями политик.- Развёртывание контейнерное, во внутренней платформе Yandex Deploy.
Отдельная инженерная часть — исполнение пользовательских правил согласования на Python. Для них есть изолированная среда с ограничениями ресурсов и доступом к данным через ограниченный API. В историческом механизме изоляция реализована через Porto-контейнеры.При этом авторизация конкретных запросов остаётся в подключённых системах. IDM управляет жизненным циклом доступов и сверяет состояние, поэтому обращаться к нему при каждом действии пользователя не требуется.