Добавить в корзинуПозвонить
Найти в Дзене
Павлин Шарит

Django в центре экосистемы

Django в центре экосистемы Многие из вас могли заметить мою неравнодушность к Django - есть очевидная причина тому, у нас на нем написана львиная доля функционала. Рассказываю как выглядит архитектура Множество приложений - одна архитектурная философия У нас несколько продуктов - основное мобильное приложение Nova Cardio, веб-платформа для врачей, внутренние инструменты аналитики. Везде в центре архитектуры лежит Django, а вокруг крутятся специализированные сервисы В основном Django приложении у нас куча собственных django-apps под разные задачи: - nova_device - управление устройствами - nova_health - обработка данных - nova_quiz - система опросников - nova_account - аккаунты пользователей - nova_raw_measurement - сырые данные с устройств Переиспользуемые компоненты между проектами Часть функционала мы выделили в отдельные пакеты и используем во всех наших приложениях: - django_nova_users - система пользователей с поддержкой Keycloak и обычной авторизации - Push уведомления для м

Django в центре экосистемы

Многие из вас могли заметить мою неравнодушность к Django - есть очевидная причина тому, у нас на нем написана львиная доля функционала. Рассказываю как выглядит архитектура

Множество приложений - одна архитектурная философия

У нас несколько продуктов - основное мобильное приложение Nova Cardio, веб-платформа для врачей, внутренние инструменты аналитики. Везде в центре архитектуры лежит Django, а вокруг крутятся специализированные сервисы

В основном Django приложении у нас куча собственных django-apps под разные задачи:

- nova_device - управление устройствами

- nova_health - обработка данных

- nova_quiz - система опросников

- nova_account - аккаунты пользователей

- nova_raw_measurement - сырые данные с устройств

Переиспользуемые компоненты между проектами

Часть функционала мы выделили в отдельные пакеты и используем во всех наших приложениях:

- django_nova_users - система пользователей с поддержкой Keycloak и обычной авторизации

- Push уведомления для мобилки

- Health check система с кастомными проверками

- Система метрик и аналитики

Один раз написали нормально - теперь просто poetry add django-nova-users и используем везде

Специализированные сервисы

Вокруг основного Django крутится несколько независимых сервисов:

- Gotenberg для генерации PDF - гораздо быстрее чем делать это в Python

- Сервис поддержки для общения с пользователями - отдельное Django приложение с чатами и тикет-системой

- FastAPI микросервисы для высоконагруженных API

- C# сервис для валидации отчетов .sout - проще использовать готовые .NET библиотеки

PostgreSQL как основа

Основная база везде PostgreSQL - проверенное решение и знакомое многим

Под разные задачи используем специфичные расширения:

- PostGIS (GDAL) для работы с геоданными

- pgvector для поиска по векторам в RAG системе охраны труда

- Полнотекстовый поиск

Почему такая архитектура масштабируется

Django справляется с основной нагрузкой, а когда появляются узкие места - выносим в отдельные сервисы. Команда остается в знакомом стеке, но при этом можем оптимизировать критичные участки

Переиспользуемые компоненты позволяют запускать новые продукты за дни вместо месяцев - весь базовый функционал уже готов

Поддержать на Boosty

Посмотреть на Youtube