Разработка комплексного решения на микросервисной архитектуре.
Система позволяет удаленно оформлять юридически значимые договоры с применением простой электронной подписи (ПЭП) на проведение МРТ-исследований.
Реализованы услуги:
Внедрить систему электронного подписания договоров для достижения четырех ключевых целей:
Задачи в контексте всей разработки создать безопасный, масштабируемый и отказоустойчивый сервис, который в автоматическом режиме:
настроить долговременное хранение с автоматической архивацией.
Решение Одним из значимых факторов успеха в таких проектах становится не столько код, сколько надежность, воспроизводимость и контролируемость платформы, на которой он работает. Наш DevOps-инженер выступил на проекте архитектором этой платформы.
Выбрали программное обеспечение Kubernetes (обусловлено необходимостью декларативного управления инфраструктурой).
Это позволит:
Выбранная архитектура сервиса обеспечит высокую гибкость и отказоустойчивость:
Результат Технологическая отказоустойчивость
Кластер PROD-среды обработал несколько отказов сервером без простоя сервиса (нулевой период недоступности для пациентов).
Скорость и безопасность изменений
Благодаря автоматизации, выполнили более 70 безопасных развертываний за время проекта. Количество инцидентов из-за «разрыва сред» сведено к нулю.
Контроль и наблюдаемость
Реализован единый «пульт управления» (Grafana dashboards) для инфраструктуры и приложений, что позволило команде оперативно выявлять и устранять узкие места в производительности.
Снижение операционных рисков
Экономия на масштабировании
Инфраструктура, описанная кодом, позволяет масштабировать сервис в новые регионы не за месяцы, а за дни, что снижает стоимость будущего роста.
Фундамент для инноваций
Стабильная и предсказуемая платформа позволит бизнесу и разработке фокусироваться на улучшении продукта для пациентов, а не на «тушении пожаров» в инфраструктуре.
Трудности, для которых бэкенд-команда нашла оптимальные решения, связаны с точным позиционированием штампа на PDF. Обычно это самая нетривиальная задача.
PDF не хранит информацию о логической структуре текста — только координаты каждого символа. Нужно было разработать алгоритм, который находит последний символ в документе и гарантированно размещает штамп после него.
При этом необходимо учитывать разные шрифты, кодировки и возможность переноса на новую страницу. Малейшая ошибка в координатах — и штамп мог наехать на текст или выйти за пределы страницы. Благодаря команде задача была решена.
Используемые технологии Kubernetes GitLab CI/CD Ansible.NET, MWS Cloud Grafana S3-совместимое хранилище. Бэкенд: .NET 8, Asp.Net Core Хранение данных: PostgreSQL, MinIO Очереди и фоновые задачи: Hangfire (Redis) Конвертация и обработка PDF: Gotenberg (HTML→PDF), PdfSharpCore, PdfPig Позиционирование и наложение штампов: Собственный алгоритм на PdfPig + PdfSharpCore с анализом координат текста Интеграции: MTS Exolve (sms-уведомления) Инфраструктура: Docker, Kubernetes Документирование: OpenAPI