Odin · собственная разработка с 2018 года

Платформа Odin

Собственная технологическая платформа, на которой работают все наши продукты.

Все продукты FWalls работают на Odin. Мы не собираем их из готовых библиотек и не зависим от внешних поставщиков платформы.

Как устроена платформа

Odin — это набор сервисов и хранилищ, которые разворачиваются вместе и общаются событиями. Любой компонент можно заменить или продублировать, не переписывая приложение.

Сервисы и события

Логика разложена на небольшие сервисы. Они обмениваются сообщениями через брокер, а не вызывают друг друга напрямую.

Журнал как источник истины

Изменения состояния записываются событиями. Из журнала восстанавливается актуальное представление данных и полная история операций.

Комплектация под задачу

Состав платформы собирается под проект: от компактной инсталляции на одном сервере до распределённого контура в нескольких дата-центрах.

Компоненты платформы

Платформа собрана из собственных и открытых компонентов, которые мы эксплуатируем и обновляем сами.

01

Распределённый брокер сообщений

Транспорт между сервисами: очереди и топики, гарантированная доставка, повторная обработка после сбоя.

02

Реализация JavaScript на сервере

Собственный серверный JavaScript: один язык на клиенте и на бэкенде, общий код, типы и валидация.

03

HTTP(S) и TCP-маршрутизатор

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

04

Объектно-реляционная СУБД

Транзакционные данные с жёсткой схемой: платежи, заказы, справочники, отчётность.

05

Документоориентированная СУБД

Гибкие структуры и быстрый доступ по ключу: профили, события, заранее собранные представления.

06

Поисковый движок

Полнотекстовый поиск и фасетные фильтры по большим каталогам и архивам документов.

07

RocksDB

Локальное хранилище на диске: журналы событий, индексы и состояние сервисов.

08

Redis

Кэш и быстрые структуры в памяти: счётчики, блокировки, сессии, очереди задач.

09

Websocket-сервер (µWS)

Двусторонняя связь в реальном времени: чаты, статусы, доставка событий, работа при нестабильной сети.

10

Облачная платформа

Управление ресурсами и запуск сервисов: изоляция, лимиты, автомасштабирование под нагрузку.

11

Распределённое хранилище объектов

Файлы, изображения и резервные копии: репликация между узлами и отказоустойчивость.

12

Система оркестрации и управления конфигурациями

Развёртывание, обновление и откат сервисов по декларативному описанию.

13

Мониторинг и уведомления

Метрики, трассировка, журналы и оповещения дежурной смены о отклонениях.

14

Хранилище конфигураций сервисов

Единый источник настроек и секретов с версионированием и быстрым откатом.

15

React Native

Мобильные приложения для iOS и Android из одной кодовой базы, с обновлением без публикации в сторах.

16

Golang

Высоконагруженные сервисы и системные компоненты платформы.

Свойства

Свойства, которые получает продукт, построенный на Odin.

01

Event Sourcing и CQRS

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

02

Обновление без остановки сервисов

Две версии сервиса работают одновременно. Выкатка и откат проходят без окна простоя и без остановки обслуживания пользователей.

03

Модульность

Меняешь один сервис, не трогая остальные: контракты и события вместо общей базы кода, где правка в одном месте ломает другое.

04

Скорость развёртывания

Новый сервис поднимается из готовых компонентов. Это комплект под задачу, а не проект с нуля.

05

Разнообразие комплектаций

От компактной инсталляции на одном сервере до распределённого контура в нескольких дата-центрах.

06

Богатый API

REST, WebSocket и событийные подписки. Внешние системы подключаются к платформе без её доработки.

07

Мультидатацентровость

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

08

Бесперебойность

Отказ узла не останавливает сервис: резервирование, автоперезапуск и деградация отдельных функций вместо полного простоя.

Фронтенд-платформа

pastish2

Свой веб-фреймворк: серверная отрисовка, живые интерфейсы и один файл на выходе

pastish2 — веб-фреймворк собственной разработки для Node.js и Bun. На нём собран этот сайт, платформа онлайн-обучения Udeu и бэк-офисы наших заказчиков. Как Odin закрывает серверную часть, так pastish2 закрывает клиентскую: это не сборка из чужих библиотек, а собственная основа.

Отрисовка на сервере и на клиенте

Сервер отдаёт готовый HTML, который находят поисковые системы, а клиентский код оживляет разметку и дальше обновляет страницы без перезагрузки. Режим выбирается задачей, а не переписыванием проекта.

Свой сервер на uWebSockets

Серверная часть работает на высокопроизводительном HTTP-сервере, а WebSocket для обновлений в реальном времени встроен в фреймворк, а не приделан сбоку.

Мультитенантность из коробки

Один код и разные бренды: механизм оверлеев позволяет вести нескольких заказчиков в одном репозитории. Так работают Udeu, «Амбиции» и проекты медиахолдинга.

Оформление в одном месте

Стили описываются объектами JavaScript с токенами темы, поэтому цвета и типографика живут в одном файле, а не расползаются по разметке. Этот сайт устроен именно так.

Один файл на выходе

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

Веб и рабочие места

Тот же проект собирается в настольное приложение. Так для macOS и Windows собраны платформа «Амбиции» и бэк-офис колл-центра RC Club.

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

Инструмент на платформе

Reaper

Один экран вместо SSH, systemctl и десятка вкладок

Веб-панель для оперативного управления микросервисным бэкендом: запускать, останавливать и перезапускать процессы, следить за логами в реальном времени, управлять политиками доступа, обновлять сервисы и точечно править данные — без SSH и ручных команд.

Reaper собирает операционное управление распределённым бэкендом в одно окно. Инженер видит окружения и машины, список сервисов с числом запущенных процессов и потреблением памяти, переключается между задачами и инстансами и выполняет действия в один клик. Диагностика встроена в тот же экран: поток логов по выбранному процессу и сводный Live Log по всем сервисам сразу.

Reaper — внутренний инструмент, который разворачивается в инфраструктуре команды и работает с её окружениями. Это не облачный сервис: в нём нет учётных записей и ролей, журнала действий, графиков метрик и оповещений о сбоях. Сейчас это веб-приложение, настольная сборка — в планах.

  • Окружения и машины — переключение между средами и серверами
  • Сервисы и процессы — статусы, память, аптайм, число инстансов
  • Управление процессами — запуск, остановка, перезапуск, новый инстанс
  • Логи в реальном времени — по процессу и сводный Live Log
  • Политики доступа — переключение allow и deny по маршрутам
  • Правка данных сущностей без подключения к базе
  • Массовые операции с прогрессом и подтверждением
  • Светлая и тёмная темы, интерфейс на русском языке

Платформа

Соответствие требованиям

Платформа проектировалась под требования по защите персональных данных.

152-ФЗ

Персональные данные граждан России размещаются и обрабатываются на серверах в России. Доступ разграничен, действия журналируются.

Размещение серверов

Данные и вычисления размещаются в российских дата-центрах.

Россия

Данные и вычисления в российских дата-центрах: требования 152-ФЗ и низкая задержка для пользователей в России.

Показать Odin вживую

Расскажем, как платформа ложится на вашу задачу, и покажем работающие продукты, собранные на её основе.

Связаться