Системный Аналитик
Канал для системных аналитиков и не только: подборки полезных материалов на все случаи жизни. Реклама и сотрудничество @radale https://gosuslugi.ru/snet/67b0613c6411ff785396754a
Больше📈 Аналитический обзор Telegram-канала Системный Аналитик
Канал Системный Аналитик (@sys_sa) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 19 097 подписчиков, занимая 6 703 место в категории Технологии и приложения и 34 208 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 19 097 подписчиков.
Согласно последним данным от 06 октября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 17, а за последние 24 часа — -13, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 13.42%. В первые 24 часа после публикации контент обычно набирает 8.29% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 2 563 просмотров. В течение первых суток публикация набирает 1 583 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 11.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как api, архитектура, собеседование, транзакция, документация.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Канал для системных аналитиков и не только: подборки полезных материалов на все случаи жизни.
Реклама и сотрудничество @radale
https://gosuslugi.ru/snet/67b0613c6411ff785396754a”
Благодаря высокой частоте обновлений (последние данные получены 07 октября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
orders.europe.created). * заменяет ровно одно слово, # — ноль и более слов.
🟣headers: маршрутизация по заголовкам сообщения, без routing key.
AMQP 1.0
AMQP 1.0 — не следующая версия 0-9-1, а другой протокол
✖️ С 0-9-1 его не связывает ничего, кроме имени
👇 1.0 описывает только передачу и не навязывает модель брокера: гарантии доставки настраиваются на каждом канале отдельно
Гарантии доставки в AMQP 0-9-1
Базовая публикация не подтверждается брокером: без дополнительных механизмов это «отправил и забыл» (at most once)
Надёжность собирается из частей:
🔘publisher confirms: брокер подтверждает приём каждого сообщения (расширение RabbitMQ)
🔘consumer acknowledgements: сообщение считается обработанным только после подтверждения потребителем. Без подтверждения брокер доставит его повторно
🔘persistent-сообщения и durable-очереди: защита от потери при перезагрузке брокера
👇 Комбинация даёт семантику at least once (как минимум один раз)
Её цена — дубликаты, поэтому потребитель должен быть идемпотентным
Когда использовать AMQP
- корпоративная интеграция и микросервисы: сложная маршрутизация, разделение и слияние потоков событий
- приоритизация, транзакционность (несколько публикаций «всё или ничего»)
- гарантии доставки
Брокеры
🔘RabbitMQ
🔘Azure Service Bus (основной протокол — AMQP 1.0)
🔘ActiveMQ
MQTT
MQTT — лёгкий бинарный протокол публикации/подписки для устройств с ограниченными ресурсами и нестабильной сетью
👇 Стандартные порты — 1883 (TCP) и 8883 (TLS)
Архитектура
Издатель ➡️ брокер ➡️ подписчики
🟣 У клиентов нет адресов: издатель публикует сообщение брокеру, тот фильтрует по топикам и рассылает подписчикам
🟣 Издатель и подписчик не знают друг о друге.
Топики
Данные адресуются топиками — иерархическими метками
Уровни разделяются слэшем:
🟣factory/line2/temperature — топик датчика температуры второй линии цеха.
🟣Подписка — на точный топик или маску:
🟣factory/+/temperature — датчики температуры всех линий (+ заменяет ровно один уровень);
🟣factory/# — всё производство (# заменяет ноль и более уровней, включая сам factory).
Формат payload (JSON, бинарные данные) стандарт не описывает — это договорённость сторон
Гарантии
QoS (Quality of Service) действует на каждом участке отдельно
Итоговый QoS для подписчика — минимальный из QoS публикации и QoS подписки
Поэтому идемпотентность потребителя остаётся актуальной даже при QoS 2 («ровно один раз»).
Механизмы MQTT
🟣Retained-сообщения: брокер хранит последнее сообщение топика и выдаёт его каждому новому подписчику
Подключился — сразу получил актуальное состояние
🟣LWT (Last Will and Testament, «завещание»): при подключении клиент оставляет брокеру сообщение, которое тот опубликует при нештатном обрыве связи
Типовой паттерн — топик статуса устройства со значениями online/offline
🟣 Persistent-сессии: брокер помнит подписки офлайн-клиента и накапливает для него сообщения QoS 1/2.
Когда использовать MQTT
🟡 IoT и телеметрия: датчики, телематика, умные здания и производства
🟡 Мобильные приложения, где важны расход трафика
🟣Если устройство на сетевом питании отправляет данные раз в час, HTTP может оказаться проще
Брокеры
Eclipse Mosquitto, EMQX, HiveMQ
STOMP
STOMP (Streaming Text Oriented Messaging Protocol) — простой текстовый фреймовый протокол по мотивам HTTP
Единственный из тройки, которым можно пользоваться вручную: сессию с брокером можно открыть даже через telnet
🟣Общение идёт фреймами: команда, заголовки вида «ключ: значение», тело
🟣Ключевое отличие: у STOMP нет собственной модели маршрутизации. Destination — непрозрачная строка, семантику которой задаёт брокер:
- в RabbitMQ /queue/имя — разделяемая очередь
- /topic/ключ — публикация в topic-exchange
- /exchange/имя/ключ — произвольный exchange
✅ Есть подтверждения (ACK/NACK) и транзакции (BEGIN/COMMIT/ABORT) — группа отправок «всё или ничего»
✖️ Уровней QoS, как в MQTT, нет
Когда использовать STOMP
🟣Браузерные клиенты поверх WebSocket: чаты, уведомления, обновления в реальном времени
🟣Скриптовые языки, быстрые прототипы, ручная отладка
🟡Для высоконагруженных прод-интеграций бинарные AMQP и MQTT эффективнее
Реализации
👇 Плагин RabbitMQ (TCP-порт 61613, для браузеров — Web STOMP),
👇 Apache ActiveMQ и Artemis
👇 встроенный брокер Spring
Типичные ошибки
✖️ «Это конкуренты Kafka» → это протоколы, а Kafka — платформа потоковой обработки со своим бинарным протоколом. Сравнивать надо брокеров: Kafka vs RabbitMQ
✖️ «AMQP — это брокер» → AMQP — протокол; брокеры (RabbitMQ, Qpid, ActiveMQ) — его реализации
✖️ «MQTT — это очередь» → нет: это pub/sub «многие ко многим», а не очередь точка-точка
✖️ «AMQP 1.0 — развитие 0-9-1» → два разных протокола под одним именем
📎 Материалы
1. Протокол MQTT: концептуальное погружение
2. AMQP vs. MQTT: 9 ключевых различий
3. Краткий обзор протокола AMQP
4. Сравнение популярных брокеров MQTT с открытым исходным кодом
📚 Книги
RabbitMQ для профессионалов — Гэвин Рой
#проектирование #интеграции
➿➿➿➿➿➿➿➿➿➿
🧑🎓 Более поробное сравнение в базе знаний по системному анализуЗащита системы состоит из нескольких слоёв-барьеров, и в каждом есть слабые места — «отверстия» Инцидент происходит, когда отверстия выстраиваются в одну линию и угроза проходит насквозь.Отсюда два типа причин: 💠 Активные отказы: действия и ошибки, которые привели к событию 💠 Латентные условия: скрытые системные проблемы организации, которые существовали до инцидента Причины разбираются по факторам: ➡ отсутствующие или несработавшие барьеры: контроли, которые должны были предотвратить или смягчить инцидент, но не справились ➡ действия людей и команд: что сделали или не сделали вовлечённые люди — включая ошибки и нарушения ➡ условия задачи и рабочей среды: состояние оборудования, нехватка времени, нагрузка, факторы среды, сбои коммуникации ➡ организационные факторы: управленческие решения, распределение ресурсов Иногда выделяют пятую группу — человеческие факторы: усталость, стресс, ситуационную осведомлённость. Как работает по шагам: 1⃣ Немедленное реагирование: локализовать инцидент, защитить людей и окружающую среду 2⃣ Сбор доказательств: физические, документальные и свидетельские — документы, логи, интервью. Доказательства быстро теряют качество, поэтому сбор начинается в течение часов; сам анализ — после стабилизации сервиса 3⃣ Хронология: восстановить последовательность событий и условий, в которых они происходили 4⃣ Анализ барьеров: какие контроли должны были предотвратить инцидент, где они отказали или отсутствовали 5⃣ Анализ действий и условий: что делали вовлечённые люди и в каких условиях — задачи, рабочая среда — они работали 6⃣ Анализ организационных факторов: какие решения, политика и культура допустили такие условия 7⃣ Рекомендации и отчёт: сформулировать корректирующие действия по принципу SMART — конкретные, измеримые, достижимые, релевантные, ограниченные по времени — и внести их в отчёт расследования Команда расследования должна быть независимой Пример Ситуация: в финансовой компании произошёл сбой платформы — выставление счетов задержалось на две недели, компания понесла потери Разбор по ICAM выявит: 💚 несработавший барьер: плановое обслуживание платформы было назначено внахлёст с критическими бизнес-операциями 💚 действия людей: инженеры неверно интерпретировали инструкции по перезагрузке системы 💚 латентные условия: реестр рисков устарел и не отражал ИТ-зависимости бизнес-процессов 💚 организационные факторы: ИТ-отдел работал изолированно, интеграция с бизнес-операциями была слабой Итог: перестроили планирование между отделами, усилили управление подрядчиками, руководителям внедрили дашборд, который в реальном времени показывает состояние ИТ-систем. 💚 Все выводы — про изменение системы, а не про поиск виноватых. 📎 Материалы 1. Метод ICAM (Incident Cause Analysis Method) 2. Контрольный список шаблона метода анализа причин инцидента (ICAM) 3. Модель швейцарского сыра 4. Постмортем без наказаний: культура разбора ошибок, которая реально улучшает качество проектов 5. Инцидент-менеджмент с нуля: практический гайд для растущих команд 📚 Книги 1. Безопасные и надежные системы. Лучшие практики проектирования, внедрения и обслуживания как в Google — Хизер Адкинс, Бетси Бейер и др. #инфраструктура ➿➿➿➿➿➿➿➿➿➿ 🧑🎓 Более поробное сравнение в базе знаний по системному анализу
MVCC — каждая работает со своим снимком данных на момент старта, читающие не блокируют пишущих.
6️⃣ Глобальное время для согласованности между дата-центрами
Например, чтобы упорядочить транзакции по всему миру, Google Spanner использует TrueTime — атомные часы и GPS-приёмники в каждом ЦОД с известной погрешностью.
Перед коммитом транзакция ждёт, пока эта неопределённость не станет нулевой
▶️ Плата за распределённость — дополнительные раунды обмена между узлами: чем больше шардов и реплик проходит транзакция, тем выше задержка
👉 NewSQL выгоден там, где нужна именно горизонтальная масштабируемость, а не предельная скорость одиночного сервера
Классификация NewSQL-систем
Выделяют два подхода к появлению NewSQL-систем:
1️⃣ Созданные с нуля
Опираются на оперативную память (in-memory) и быстрые накопители (SSD) для предельной скорости доступа
Например, VoltDB (in-memory NewSQL-СУБД для OLTP-нагрузок реального времени),
2️⃣ Модификация существующих движков
Расширяют зрелые СУБД (например, MySQL/MariaDB) новыми движками хранения и оптимизациями
Например, Percona Server (оптимизированный форк MySQL),
▶️ Отдельная ветка — связующее ПО (middleware), которое делает прозрачное шардирование над обычными одноузловыми СУБД: Apache ShardingSphere, MaxScale.
Это не полноценный NewSQL: такие слои маршрутизируют запросы, но не дают распределённого ACID
Примеры СУБД
🔹YDB (Яндекс) — open-source распределённая реляционная SQL-СУБД
Горизонтальная масштабируемость, строгая согласованность и ACID-транзакции, совмещение OLTP- и OLAP-нагрузок; язык запросов — YQL (диалект SQL)
🔹CockroachDB — распределённая SQL-база, совместимая с диалектом PostgreSQL, с упором на географическое распределение и живучесть
🔹Tarantool (экосистема VK) — in-memory СУБД с хранимыми процедурами на Lua, синхронной репликацией и автоматическими выборами лидера. Не классический NewSQL, а смежное решение для высоконагруженных сценариев: очереди, кэши, мастер-хранилища с высокой пропускной способностью
Когда применять
😫 высоконагруженные OLTP-системы, где критична строгая согласованность данных (финтех, биллинг, обработка платежей)
😫 географически распределённые системы. Когда данные и пользователи размазаны по дата-центрам и регионам, а согласованность всё равно нужна
😫 когда вертикальное масштабирование классической реляционной БД упёрлось в потолок, но переходить на NoSQL с конечной согласованностью нельзя по требованиям бизнеса.
Когда НЕ стоит использовать
➖ небольшие проекты с предсказуемой нагрузкой. Классической реляционной БД (MySQL, PostgreSQL) хватит
➖ неструктурированные и слабоструктурированные данные. Соцсети, логи, данные датчиков, вложенные документы — для NoSQL (документные, ключ-значение, графовые БД)
Плюсы и минусы
➕ горизонтальная масштабируемость без отказа от строгой согласованности и ACID
➕ привычный SQL и совместимость с реляционными инструментами
➕ отказоустойчивость и высокая доступность за счёт распределённой архитектуры и репликации
➕ подходит для систем с большим потоком параллельных транзакций
➖ сложность настройки, обслуживания и диагностики неполадок по сравнению с классическими реляционными БД
➖ ограниченная переносимость между решениями: разные NewSQL используют разные диалекты SQL и архитектуры, миграция между ними не всегда простая
➖ выше задержка на запись из-за раундов согласования между узлами (консенсус, распределённый коммит)
📎 Материалы
1. Кратко про NewSQL
2. Как выбрать NewSQL-СУБД для вашей компании
3. NewSQL: SQL никуда не уходит
4. NewSQL — новый виток в эволюции BigData
5. Сравнение производительности YDB, CockroachDB и YugabyteDB на бенчмарке YCSB
6. Разбираемся в типах баз данных
📚 Книги
1. Высоконагруженные приложения. Программирование, масштабирование, поддержка — Мартин Клеппман
#бд #sql
➿➿➿➿➿➿➿➿➿➿
🧑🎓 Более поробное сравнение в базе знаний по системному анализу{"price": 1990, "currency": "RUB"})
Клиент ➡️ знает, как отобразить эти данные на конкретной платформе
🟠В SDUI сервер отдаёт описание интерфейса:
Сервер ➡️ отправляет компоненты и их свойства ({"type": "price_label", "props": {"text": "1 990 ₽"}})
Клиент ➡️ по описанию собирает экран из готовых нативных компонентов
❗️Ключевое отличие: логика «что и где показать» переезжает с клиента на сервер
Как работает
Система состоит из трёх частей:
1⃣ UI-кит (компонентная база) — набор реализованных на каждой платформе нативных компонентов (кнопка, карточка, баннер, список). Это «общий язык» между сервером и клиентом.
2⃣ Движок рендеринга — клиентский механизм, который по описанию из JSON собирает экран: находит нужный компонент в UI-ките и передаёт ему свойства.
3⃣ Контракт (директивы) — описание экрана, которое сервер отдаёт клиенту.
Типовой поток
1. На сервере формируется описание экрана (какие компоненты, порядок, свойства, действия).
2. Клиент запрашивает конфигурацию и получает JSON
3. Движок рендеринга разбирает JSON, по type находит компоненты в реестре и отрисовывает их
4. Пользователь взаимодействует (например, нажимает кнопку) — клиент выполняет действие (action), пришедшее вместе с компонентом
5. Нужно поменять экран — правка конфигурации на сервере, при следующем открытии приложения пользователи видят новый UI без обновления из стора
Принципы SDUI
⭕️ Начинать с экрана, а не с данных. API проектируется под то, что нужно показать, а не под структуру БД (demand-driven подход).
⭕️ Минимум логики на клиенте. Любой if/else про «что показать» — кандидат на переезд на сервер. Иначе логика дублируется на каждой платформе.
⭕️ Отдавать продуктную информацию, а не доменные данные. Вместо price: 1990 + currency сервер сразу отдаёт готовую строку "1 990 ₽". Форматирование, локализация, скругления — на сервере.
⭕️ Единая дизайн-система. Все клиенты используют общий UI-кит, тогда серверная инструкция «отрисуй primary-кнопку» даст одинаковый результат везде.
⭕️ Внедрять инкрементально. Не переписывать всё приложение сразу, а начать с одного экрана или компонента (например, баннера на главной).
Плюсы и минусы
✅ мгновенные обновления UI — без релизов в сторах и ожидания обновления у пользователей
✅ кроссплатформенность из коробки — один JSON рендерится на iOS, Android, Web
✅ простой A/B-тестинг и персонализация — разный UI разным сегментам одним изменением на сервере
✅ единообразие платформ — все клиенты синхронны, расхождений почти нет
✅ снижение нагрузки на мобильную разработку — фронт не верстает каждый экран с нуля
➖ без интернета UI не загрузится; нужны кэширование и фолбэки, иначе пустые экраны
➖ сложность старта — нужен UI-кит, движок рендеринга и серверная часть под это
➖ двойная поддержка компонентов — компоненты живут и на клиенте (реализация), и на сервере (описание)
➖сложнее отладка — труднее понять, почему экран выглядит именно так (собрался динамически)
➖ риск «зашить» бизнес-логику в UI — границы между слоями легко размыть
Где используется
Когда много платформ, а интерфейс меняется часто и под разные сегменты пользователей:
🟠 Travel- и маркетплейс-платформы — быстрые итерации UI в разделах с динамическим контентом
🟠 соцсети и стриминговые сервисы — мгновенный rollout изменений и экспериментов
🟠 e-commerce и маркетплейсы — разные раскладки витрин для разных продавцов (например, блок «Бестселлеры» только для крупных магазинов)
🟠когда нужно обновлять интерфейс с сервера, не зависеть от сторов
📎 Материалы
1. Чем полезен Server Driven UI
2. Яндекс выпускает DivKit — фреймворк для server-driven UI с открытым кодом
3. Server Driven UI в Альфа-Банке
4. Server-Driven UI архитектура: server-driven vs content-driven
5. Как работает Server-Driven UI и зачем он фронтендеру
#архитектура
➿➿➿➿➿➿➿➿➿➿
🧑🎓 Более поробное сравнение в базе знаний по системному анализу