Сервисы и события
Логика разложена на небольшие сервисы. Они обмениваются сообщениями через брокер, а не вызывают друг друга напрямую.
Odin · собственная разработка с 2018 года
Собственная технологическая платформа, на которой работают все наши продукты.
Все продукты FWalls работают на Odin. Мы не собираем их из готовых библиотек и не зависим от внешних поставщиков платформы.
Odin — это набор сервисов и хранилищ, которые разворачиваются вместе и общаются событиями. Любой компонент можно заменить или продублировать, не переписывая приложение.
Логика разложена на небольшие сервисы. Они обмениваются сообщениями через брокер, а не вызывают друг друга напрямую.
Изменения состояния записываются событиями. Из журнала восстанавливается актуальное представление данных и полная история операций.
Состав платформы собирается под проект: от компактной инсталляции на одном сервере до распределённого контура в нескольких дата-центрах.
Платформа собрана из собственных и открытых компонентов, которые мы эксплуатируем и обновляем сами.
Транспорт между сервисами: очереди и топики, гарантированная доставка, повторная обработка после сбоя.
Собственный серверный JavaScript: один язык на клиенте и на бэкенде, общий код, типы и валидация.
Входная точка платформы: TLS, маршрутизация запросов, балансировка, ограничение частоты обращений.
Транзакционные данные с жёсткой схемой: платежи, заказы, справочники, отчётность.
Гибкие структуры и быстрый доступ по ключу: профили, события, заранее собранные представления.
Полнотекстовый поиск и фасетные фильтры по большим каталогам и архивам документов.
Локальное хранилище на диске: журналы событий, индексы и состояние сервисов.
Кэш и быстрые структуры в памяти: счётчики, блокировки, сессии, очереди задач.
Двусторонняя связь в реальном времени: чаты, статусы, доставка событий, работа при нестабильной сети.
Управление ресурсами и запуск сервисов: изоляция, лимиты, автомасштабирование под нагрузку.
Файлы, изображения и резервные копии: репликация между узлами и отказоустойчивость.
Развёртывание, обновление и откат сервисов по декларативному описанию.
Метрики, трассировка, журналы и оповещения дежурной смены о отклонениях.
Единый источник настроек и секретов с версионированием и быстрым откатом.
Мобильные приложения для iOS и Android из одной кодовой базы, с обновлением без публикации в сторах.
Высоконагруженные сервисы и системные компоненты платформы.
Свойства, которые получает продукт, построенный на Odin.
Состояние восстанавливается из журнала событий, чтение и запись разделены. Отсюда аудит каждой операции, воспроизводимость и высокая скорость чтения.
Две версии сервиса работают одновременно. Выкатка и откат проходят без окна простоя и без остановки обслуживания пользователей.
Меняешь один сервис, не трогая остальные: контракты и события вместо общей базы кода, где правка в одном месте ломает другое.
Новый сервис поднимается из готовых компонентов. Это комплект под задачу, а не проект с нуля.
От компактной инсталляции на одном сервере до распределённого контура в нескольких дата-центрах.
REST, WebSocket и событийные подписки. Внешние системы подключаются к платформе без её доработки.
Сервисы работают в нескольких дата-центрах: репликация данных, переключение трафика, устойчивость к отказу площадки.
Отказ узла не останавливает сервис: резервирование, автоперезапуск и деградация отдельных функций вместо полного простоя.
Фронтенд-платформа
Свой веб-фреймворк: серверная отрисовка, живые интерфейсы и один файл на выходе
pastish2 — веб-фреймворк собственной разработки для Node.js и Bun. На нём собран этот сайт, платформа онлайн-обучения Udeu и бэк-офисы наших заказчиков. Как Odin закрывает серверную часть, так pastish2 закрывает клиентскую: это не сборка из чужих библиотек, а собственная основа.
Сервер отдаёт готовый HTML, который находят поисковые системы, а клиентский код оживляет разметку и дальше обновляет страницы без перезагрузки. Режим выбирается задачей, а не переписыванием проекта.
Серверная часть работает на высокопроизводительном HTTP-сервере, а WebSocket для обновлений в реальном времени встроен в фреймворк, а не приделан сбоку.
Один код и разные бренды: механизм оверлеев позволяет вести нескольких заказчиков в одном репозитории. Так работают Udeu, «Амбиции» и проекты медиахолдинга.
Стили описываются объектами JavaScript с токенами темы, поэтому цвета и типографика живут в одном файле, а не расползаются по разметке. Этот сайт устроен именно так.
Сборка даёт исполняемый файл: развёртывание сводится к копированию, а подготавливать окружение на сервере не требуется.
Тот же проект собирается в настольное приложение. Так для macOS и Windows собраны платформа «Амбиции» и бэк-офис колл-центра RC Club.
pastish2 — внутренний фреймворк команды: он не выложен в открытый доступ, документация внутренняя, сообщества вокруг него нет. Заказчик получает его пользу косвенно — через скорость разработки и независимость от чужих библиотек.
Инструмент на платформе
Один экран вместо SSH, systemctl и десятка вкладок
Веб-панель для оперативного управления микросервисным бэкендом: запускать, останавливать и перезапускать процессы, следить за логами в реальном времени, управлять политиками доступа, обновлять сервисы и точечно править данные — без SSH и ручных команд.
Reaper собирает операционное управление распределённым бэкендом в одно окно. Инженер видит окружения и машины, список сервисов с числом запущенных процессов и потреблением памяти, переключается между задачами и инстансами и выполняет действия в один клик. Диагностика встроена в тот же экран: поток логов по выбранному процессу и сводный Live Log по всем сервисам сразу.
Reaper — внутренний инструмент, который разворачивается в инфраструктуре команды и работает с её окружениями. Это не облачный сервис: в нём нет учётных записей и ролей, журнала действий, графиков метрик и оповещений о сбоях. Сейчас это веб-приложение, настольная сборка — в планах.
Платформа
Платформа проектировалась под требования по защите персональных данных.
Персональные данные граждан России размещаются и обрабатываются на серверах в России. Доступ разграничен, действия журналируются.
Данные и вычисления размещаются в российских дата-центрах.
Данные и вычисления в российских дата-центрах: требования 152-ФЗ и низкая задержка для пользователей в России.
Расскажем, как платформа ложится на вашу задачу, и покажем работающие продукты, собранные на её основе.
Связаться