1. О системе

Система построена на основе Python-framework Flask. Язык разработки – Python v3. Система является приложением уровня framework и не является экземпляром, который можно запустить сам по себе. Оно является набором для создания конфигураций под конкретные запросы заказчика от самых простых до самых сложных.

Имеет модульную архитуктуру, включающую набор пакетов-библиотек, функционал подключения модулей для формирование необходимого функционала. Часть модулей входит в стандартную поставку (ядро системы), часть разрабатывается под нужды конкретного проекта. Функционал экземпляра определяется подключенными приложениями.

Интерфейсом конечного пользователя является web-браузер и является web-приложением. Применяется интерфейс, адаптирующийся под размеры экрана браузера, что дает возможность использовать систему на всех устройствах, имеющих web-браузер от комптьютеров до смартфонов и планшетов.

Используется реляционная база данных из списка: Oracle, PostgreSQL, MSSQL, MySQL

  • Разделение на ядро и конфигурацию

    Упрощает работу настройщика и снижает риски при разработке и позволяет получать обновления без переписывания конфигурации

  • Автоматическая синхронизация схемы базы данных

    Структура базы данных формируется ядром системы автоматически

  • Возможность быстрого возврата конфигурации на любое состояние

    Вся конфигурация находится в файлах и под системой контроля версий и в случае непредвиденной ситуации, ее всегда можно вернуть в любое состояние. С базой данных никаких действий осуществлять не требуется

  • Горизонтальная и вертикальная масштабируемость

    Вся логика перенесена на сервера приложений, которые легко масштабировать. Нагрузка на БД максимально перенесена на сервер приложений, который легко масштабируется

  • Легкость переноса с теста на рабочую версию

    Вся логика системы (скрипты, точная настройка оказываются 100% согласованной с конфигурацией) и обновляется на рабочую версию синхронно, потому что все это идет в составе единой ревизии системы контроля версий. После обновления, мы можем гарантировать, что ровно то, что было на тесте, будет и на рабочей версии. Нет необходимости переносить данные между таблицами тестовой и рабочей версии, Нет необходимости держать единые таблицы-справочники для рабочей и тестовой системы. Перенос сводится к обновлении ревизии в директорию рабочего сервера, применению миграций базы данных.

  • Независимая тестовая среда

    Тестовая система является копией рабочей версии и никак не связана с ней (даже через базу данных). Изменения на тесте (справочников и прочее) никак не затрагивает рабочую версию.

  • Возможность установки бета-версии: тестовая конфигурация на рабочих данных

    За счет того, что вся логика системы находится не в базе данных, а в файлах, можно развернуть сервер приложений, который подключается к рабочей базе данных

  • Пул подключений к базе данных

    Система может работать через пул подключений к базе данных и дополнительно имеет внутренний пул подключений. Снижает нагрузку на процессы oracle listener при частом установлении и разрыве подключений

  • Встроенные менеджеры фоновых операций

    Часть операций, которые требуют долгой работы (сетевое ожидание при интеграции, отправка писем, обработка загруженных файлов), можно выполнять в фоновом режиме, не задерживая работу операторов и распределять нагрузку на систему по времени, сглаживая пиковые нагрузки за счет размещения задач в очереди и выполнение их, когда есть свободные ресурсы сервера

  • Совместимость с различными типами серверов

    Можно запустить систему на бесплатных базах данных (например, PostgreSQL) без приобретения лицензии на коммерческие БД и в случае необходимости портировать систему с минимальными трудозатратами (логика хранится на стороне сервера приложений) на коммерческие СУБД при необходимости.

Конфигурация и набор приложений уровня ядра