Система медицинских осмотров
Как она устроена?
Мы производим медицинское оборудование, которое позволят проводить медицинские осмотры дистанционно
С комплексов данные отправляются к нам на сервер. Они включают:
На сервере формируется очередь и осмотры распределяются между медиками, которые находятся онлайн.
Медик изучает полученные медицинские данные, производит идентификацию (сверяя с фотографией из профиля пациента), затем выносит решение. Документ формируется и подписывается при помощи сертификата КЭП. Далее результаты поступают пациенту в виде подписанного pdf.
Как устроена архитектура сервера?
- Python (Django) — ORM, Templates (для WEB), REST для мобильных приложений
- Celery + Redis — асинхронные задачи (рассылка уведомлений+писем, генерирование документов, выгрузка таблиц с отчётами), периодические задачи (мониторинг системы, рассылки)
- Nginx — через gunicorn взаимодействует с Django
- PostgreSQL (основная БД)
- S3 — хранение фото, видео и документов
- Golang — сервис для формирования подписей (вызывает КРИПТОПРО для подписи документов)
Что мы используем на Yandex.Cloud:
- Compute Cloud — 1 машина под Django, Celery, Redis, Nginx (самая мощная), 1 машина под Golang с криптопро, 1 машина под сервер обновлений, 2-3 машины для тестирования.
- Managed Service for PostgreSQL — 1 БД
- Object Storage — S3
Стэк, к которому мы вероятнее всего будем стремиться:
Самые большие вопросы возникают по тому — как грамотнее осуществлять масштабирование, не переплачивая за слишком мощные VPS. У нас сейчас в течение дня нагрузка относительно равномерная, но в 8-9 МСК единственный пик, когда нагрузка возрастает в 2-3 раза. Уместно ли использовать для этого Kubernetes?
И у нас пока нет биллинга. Все наши клиенты на данный момент — это юридические лица. Счета на оплату формирует бухгалтер вручную.
Немного статистики
В нашей системе сейчас работает 42 711 пользователь
Каждый день проводится около 4 500 медицинских осмотров (данные с видео и фото по каждом осмотру занимают около 5 Мб)
Наших приборов на данный момент 530 шт.