Общее
1. Как писать требования и документацию к проекту. Полный гайд с шаблоном документации и примерами заполнения — опыт Альфы
2. Ликбез по техническому заданию
3. Как оформить спецификацию, чтобы не запутаться самому и не выбесить коллег
4. Для архитекторов и аналитиков: шаблон описания архитектуры приложения (34 страницы пользы)
5. Как выжать максимум из Confluence: часть 1, часть 2
6. Матрица трассировки требований: руководство для системного аналитика
Стандарты
1. Стандарты и шаблоны для ТЗ на разработку ПО — обзор
2. Разработка Технического задания по ГОСТ 34 легко и просто — полный гайд по ТЗ ГОСТ 34
Docs as Code
1. Опыт аналитиков Альфы про доку в коде
2. Docs as Code: как вести фронтовую документацию рядом с кодом, чтобы репозиторий не раздуло — опыт Альфы
Интеграции
1. Как создать шаблон документации к микросервису — МТС
2. Пример ТЗ для описания API
3. Шаблоны документации API
4. Как написать свою первую спецификацию на REST API
5. Как мы описываем требования к REST API для бэкенда в Confluence — Magnit Tech
6. REST API: заполненный шаблон постановки задачи
7. Шаблон постановки задачи на REST API-метод для Confluence
8. Полная постановка задачи на интеграцию - заполненный шаблон требований
Требования
1. Шаблон спецификации требований
2. Как мы создали шаблон функциональных требований к разработке ПО
3. Шаблон пользовательских историй
Для пользователей базы знаний доступны реальные сокровенные шаблоны спек от аналитиков одной из жёлтых компаний, да и вообще там много полезного
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64👍12❤9👏1
Forwarded from Библиотека Системного Аналитика
Непрерывное_развитие_API_Уайлд_Эрик,_Амундсен_Майк.pdf
5.5 MB
Непрерывное развитие АРI.
Правильные решения в изменчивом технологическом ландшафте
✍️ Автор: Мехди Меджуи, Эрик Уайлд, Ронни Митра, Майк Амундсен
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 368 стр.
Практическое руководство по эффективному управлению API. Раскрываются ключевые принципы проектирования, разработки и поддержки интерфейсов как продуктов с непрерывным жизненным циклом.
Книга охватывает:
💙 сложности управления API (масштабирование, стандарты, работа команд)
💙 стратегическое руководство (баланс централизации и гибкости)
💙 API как продукт (дизайн-мышление, опыт разработчиков, конкурентные преимущества)
💙 10 столпов успешного API — от стратегии и безопасности до мониторинга и продвижения
💙 стили API и жизненный цикл (создание, публикация, окупаемость, поддержка, удаление)
💙 работу команд (роли, масштабирование, культура).
💙 системы API (управление в крупных экосистемах, контроль версий, изменения)
#api
Правильные решения в изменчивом технологическом ландшафте
✍️ Автор: Мехди Меджуи, Эрик Уайлд, Ронни Митра, Майк Амундсен
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 368 стр.
Практическое руководство по эффективному управлению API. Раскрываются ключевые принципы проектирования, разработки и поддержки интерфейсов как продуктов с непрерывным жизненным циклом.
Книга охватывает:
#api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤14🔥5🤡1
Docs as Code – подход к созданию и сопровождению документации.
Ообращение с текстом документации, как с исходным кодом приложения:
Но всегда должна быть актуальной и согласованной с кодом (как и наоборот)
Суть подхода
Документация:
Принципы написания документации
Написание спецификаций следует принципам написания кода, но имеет свои специфичные принципы
Не дублируем информацию: один факт — один источник, остальные ссылаются
Держим форму и язык простыми, без лишних деталей.
Пишем только то, что нужно прямо сейчас; гипотезы и «на будущее» убираем
Один раздел — одна тема или функция
Уровни абстракции не смешиваем: обзор и детали храним раздельно
Ссылаемся только на ближайший нужный контекст, избегаем дальних зависимостей
Хранение документации
Документация лежит в том же репозитории, что и сервис. Обычно в каталоге /docs.
Каждая ветка и тег кода несут свою версию текстов.
Документация развивается в своём проекте (или нескольких), независимом от исходников сервисов
Когда подходит:
1. Docs as Code: введение в предмет
2. Опыт аналитиков Альфы про доку в коде
3. Docs as Code: как вести фронтовую документацию рядом с кодом, чтобы репозиторий не раздуло — опыт Альфы
4. Documentation as code: практики и инструменты документирования в сфере финансовых технологий
5. Статья о Docs as code от техписов - сайт собран как код на Rst
6. Инструменты подхода Docs-as-code
#инфраструктура #документация
А ещё там 140+ статей и 2500+ ссылок на материалы -- и всё разложено по полочкам, как мы любим.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤32🔥19👍13🤔3😁2
Примеры типов метрик
(конверсия, средний чек, количество активных пользователей)
(загрузка CPU, время ответа сервера, количество ошибок)
(время загрузки страницы, кол-во кликов до целевого действия)
Примеры технических метрик
Серверные
Приложений
БД
Методологии анализа метрик
Анализ производительности ресурсов (CPU, память, диски, сеть)
Для инфраструктурных метрик
Для для мониторинга сервисов (часто микросервисов), API
*какой % значений ниже определённого значения
Расширенная версия RED, для сложных распределённых систем
Подходы к сбору метрик
Агенты на серверах/приложениях отправляют данные на сервер мониторинга
Сервер мониторинга запрашивает данные у агентов или экспортеров
Меньше нагрузки на сеть, сервер контролирует частоту запросов
Анализ логов для извлечения метрик (кол-во ошибок, время выполнения запросов)
Универсальный подход, логи есть почти везде
Можно анализировать исторические данные
Отслеживание запросов через распределённую систему
Позволяет понять, как запрос проходит через компоненты системы
Инструменты мониторинга
Grafana: визуализация метрик
Prometheus: сбор и хранение метрик
ELK: логирование и анализ событий
Zabbix: мониторинг инфраструктуры
Nagios: мониторинг сетей и серверов
1. Мониторинг начинается с метрик | Часть 2: серверное ПО
2. Как построить эффективную стратегию мониторинга
3. Основы мониторинга и сбора метрик
4. Мониторинг и сбор метрик
5. Руководство по мониторингу производительности сервера
6. Выбираем оптимальную архитектуру мониторинга
7. Как организовать мониторинг в мультипроцессорном режиме
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤13🔥9
BASE (Basically Available, Soft state, Eventually consistent) — подход к проектированию распределённых систем
Жертвует строгой согласованностью (ACID) ради доступности, масштабируемости и гибкости
Когда используют
Три принципа BASE
Система всегда отвечает, даже при частичных сбоях
Данные могут быть неактуальными, но запросы не блокируются
Данные могут меняться со временем без внешних запросов
И могут временно находиться в несогласованном состоянии из-за асинхронных обновлений
Система придет к согласованности, но не мгновенно
BASE vs ACID vs CAP
БД не может быть и ACID и BASE одновременно
Это противоположные подходы
Но некоторые гибридные СУБД (например, MongoDB) позволяют гибко настраивать уровень согласованности
CAP-теорема: система может гарантировать только 2 из 3 свойств:
Пример реализации BASE
Онлайн-магазин с высокой нагрузкой
Товар появляется в корзине, но остатки на складе могут обновиться с небольшой задержкой
Если два покупателя одновременно добавляют последний товар → оба увидят его в корзине, но физически доступен только 1
Сервис склада (Kafka + PostgreSQL) асинхронно проверяет остатки
BASE позволяет сначала принять действие, потом проверить ограничения
Это критично для высоконагруженных сценариев
1. BASE
2. Как бы я сейчас объяснил молодому себе… зачем существуют требования ACID для баз данных?
3. Требования ACID. BASE модель. CAP теорема
4. БАЗОВАЯ модель разработки БД
5. NoSQL: что это такое, отличие от других баз данных, BASE
📚Базы данных. Инжиниринг надежности - Кэмпбелл Лейн, Мейджорс Черити (Глава 11. BASE)
#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍16❤11🔥11🤔1
Ранее писали про Swagger
Рассмотрим аналоги:
Ориентирован на Draft-first подход и работу с человеко-читаемой спецификацией (API Blueprint)
Плюсы
Пример: описан метод
POST /users, Apiary сразу отдаёт фейковый ответ с JSON-примеромПример: описание выглядит как документация, а не код
Минусы
Когда использовать
Изначально "тестировщик", стал универсальным инструментом для работы с API
Плюсы
Пример: создается мок на
GET /products, и фронтенд может работать до бэкендаПример: можно настроить ежедневную проверку, что метод
/status возвращает 200Пример: при запуске запроса вручную можно поменять параметры и увидеть ответ в реальном времени
Минусы
Когда использовать
Swagger выигрывает в спецификации, но проигрывает в удобстве тестов
Можно использовать в связке со Swagger/OpenAPI
Платформа для проектирования, документации и тестирования API с фокусом на визуал
Ориентирован на API-first подход и работу с OpenAPI-спецификациями
Плюсы
Пример: можно проектировать API с помощью drag-and-drop-интерфейса, без ручного кода
Пример: можно оставить комментарий на конкретный endpoint и пройти ревью API
Пример: можно получить готовую обёртку для клиента на TypeScript или Python
Пример: при пуше новой ветки спецификации автоматически пересобирается документация и обновляются моки
Минусы
Когда использовать
Для команд, где API — это ключевой контракт между фронтом и бэком
1. 3 лучших инструмента для описания RESTful API
2. 7 инструментов для работы с API с бесплатными тарифами
3. 8 лучших инструментов документации API в 2024 году
4. Тестирование API: виды, методы, инструменты
5. Как выбрать инструмент для тестирования API
6. swagger.io: аналоги и похожие приложения
Please open Telegram to view this post
VIEW IN TELEGRAM
❤27👍10⚡2🔥1
22.06.25 (воскресенье) в 18:00 по Мск состоится третий вебинар от Федерации Аналитиков
Ранее — аналитик и разработчик в масштабных интеграционных проектах в банковском секторе, руководитель отдела системного и бизнес анализа в продуктовой компании
(Ссылка на конференцию там же)
При добавлении встречи в календарь напоминание о мероприятии придет за 1 день, за 1 час и за 15 мин
‼️ Запись будет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤10👍5
Gap-анализ — метод выявления расхождений между текущим состоянием системы (As-Is) и целевым состоянием (To-Be)
Суть
Сравнение двух моделей (текущей и целевой) для выявления отличий, которые мешают достичь конечного состояния
Помогает ответить на вопросы:
Каждый найденный gap трансформируется в конкретные действия: изменения, доработки, внедрения
Зачем нужен
Помогает:
Когда можно применять
Примеры типов gap'ов
Пример как проводить
Фиксируется желаемое поведение, функции, архитектура, UX
Сравниваются состояния по направлениям (функции, данные, процессы и т.п.).
Gap'ы группируются по сложности, влиянию и срочности
Примеры применения
Внедрение ERP
Миграция на новую систему
Соблюдение законодательства (например, 152-ФЗ)
Автоматизация ручной отчетности
→ требуется автоматизация
Типичные ошибки
Поверхностное описание As-Is или To-Be
→ пропущенные gap'ы, неверные требования, ошибки в архитектуре
Нет детализации функций или данных
→ неполный результат
Отсутствие вовлечения экспертов и пользователей
→ упущены потребности, сопротивление изменениям при внедрении
Смешивание «хотелок» с реальными бизнес-целями
→ избыточные требования, увеличение сроков и бюджета
1. Использование GAP-анализа для выявления и согласования задач по проекту
2. Gap-анализ (анализ несоответствий) и модель развития элементов ит-архитектуры
3. Гэп технологий и бизнеса: стресс/расхождение плана с фактом/причина недостижения целей
#развитие #документация
Please open Telegram to view this post
VIEW IN TELEGRAM
❤29🔥16👍13⚡1
2PC (Two-Phase Commit) – паттерн для гарантии атомарности* распределенных транзакций
*атомарность – "всё или ничего": либо выполняются все операции транзакции, либо ни одна
Это критично для согласованности данных в распределенных системах
Роли участников
Управляет процессом, принимает решение
- транзакционные менеджеры
- СУБД-координатор
- оркестраторы
Выполняют локальные операции, голосуют
- БД
- Очереди сообщений
- Legacy-системы
Фазы
- проверяют возможность коммита своей части транзакции (проверка ограничений, конфликтов, запись в локальный лог для восстановления)
- блокируют данные (локальные блокировки)
- проверяют возможность коммита
- vote_commit (если готов)
- vote_abort (если не готов) и выполняют локальный откат
Если все vote_commit:
- фиксируют изменения данных
- освобождают блокировки
- отправляют координатору ack (подтверждение)
Если хотя бы один vote_abort (или таймаут):
- откатывают свою часть транзакции
- освобождают блокировки
- отправляют координатору ack
Сценарии работы
1. клиент делает перевод 100 руб со счета А (ресурс 1) на счет Б (Ресурс 2)
2. координатор шлет prepare обоим банкам
3. банк А: проверяет наличие 100 руб, блокирует их, голосует "Да"
банк Б: проверяет можно ли зачислить, голосует "Да"
4. координатор шлет commit
5. банк А: Списывает 100 руб, освобождает блокировку
банк Б: Зачисляет 100 руб. Оба шлют ack
6. клиент получает подтверждение
Координатор трактует как vote_abort "Нет" → Откат всех
- при восстановлении ресурс смотрит в свой лог: prepare есть, а commit/abort нет
- ждёт команду координатора (состояние "in doubt")
- после записи решения → при рестарте пересылает решение ресурсам
- до записи решения → ресурсы остаются заблокированными до ручного вмешательства
Примеры применения
1. Управление транзакциями в бд
2. Способы управления транзакциями в распределённых ИС. Механизм 2pc
3. 2pc в распределённых транзакциях
4. 2pc и будущее распределённых систем
5. Распределённые транзакции в микросервисах: от SAGA до 2pc
📚 Распределенные системы. Паттерны проектирования – Брендан Бернс
#проектирование #архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍9🔥8🤔1
Доступность системы (SA,Service Availability) — отношение времени, когда система работала, к общему времени
Availability (%) = (Время работы / Общее время) × 100
Availability = (364.25 / 365) × 100 ≈ 99.79%
Метрики доступности
Эти метрики логируются в большинстве APM/мониторинговых систем (например, Datadog, Pingdom, New Relic, Zabbix)
MTBF = Общее время работы / Кол-во сбоев
MTTR = Общее время восстановления / Кол-во инцидентов
Показывает, сколько времени в среднем уходит на устранение сбоя
RTO и RPO
Пример: RTO = 15 мин → система должна заработать не позже чем через 15 мин после сбоя
Пример: RPO = 5 мин → допустимая потеря не более 5 мин данных (время с последнего бэкапа или репликации)
Примеры под разные классы доступности
или Active-Active (оба сервера работают одновременно. Нагрузка распределяется. Если один падает — второй продолжает без переключений)
1. Классификация критичности информационных систем
2. Типы информационных систем и их уровни защищённости
3. Доступность IT-систем: поругаться или договориться?
4. MTBF — откуда берется «миллион часов MTBF»
5. Разбираемся с метрикой «Среднее временя между сбоями» (MTBF)
6. RTO и RPO: что это и в чём отличия
📚 Site Reliability Engineering. Надежность и безотказность как в Google
#архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥9❤7👏2
Типы доставки сообщений
Продюсер отправляет сообщение и не ждет подтверждения
При сбое данные могут потеряться
acks=0), консьюмер сразу обновляет офсетПродюсер отправляет сообщение, ждет подтверждения. При сбое может отправить повторно, появляются дубли
acks=all), консьюмер обновляет офсет только после обработкиИдеальная гарантия: без потерь и дублей. Kafka поддерживает механизм Transactional Producer
Реализуется через:
Если Kafka сохраняет сообщение один раз, потребитель может ошибиться (например, дважды обработать запись)
Кратко
Защита от дублей
При использовании At least once возможны дубли, нужно предусматривать их обработку
Можно настроить ключи сообщений так, чтобы консьюмер сохранял только уникальные значения
- продюсер генерирует
message_id (UUID или хэш содержимого)- брокер или БД консьюмера проверяет уникальность перед записью
order_id → повторная запись невозможна- при обновлении данных сервис сохраняет событие в отдельную таблицу Outbox вместе с основной записью
- фоновый процесс читает события из Outbox и отправляет их в Kafka
Используется на стороне консьюмера
- все события сохраняются в отдельную таблицу Inbox перед обработкой
- при сбое необработанные события можно переобработать без риска дублирования
Партиции и масштабирование
Партиция — минимальная единица хранения и обработки сообщений в Kafka
Масштабирование Kafka-кластера напрямую зависит от числа партиций
Связь: партиции
Чем больше партиций, тем выше параллелизм обработки
Почему важно количество партиций
1. Гарантии доставки сообщений в Kafka
2. Синхронизация асинхронности: Dead Letter и Inbox для обработки зависимых сообщений
3. Как обработать миллион сообщений из kafka
4. Под капотом продюсера Kafka: UML-диаграмма публикации сообщений
5. Kafka за 20 минут. Ментальная модель и как с ней работать
📚 Дилан Скотт, Виктор Гамов, Дейв Клейн. Kafka в действии
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31❤13👍7
Согласованность (consistency) — состояние, когда все пользователи и процессы видят одни и те же данные при чтении
Иначе пользователи видят разные версии, что может привести к бизнес-ошибкам.
Виды
При выборе вида согласованности:
Примеры
CAP-теорема, ACID, BASE и согласованность
- согласованность
- доступность
- устойчивость к разделению
Методы обеспечения согласованности
Алгоритмы, которые позволяют множеству узлов в распределённой системе согласовать единое состояние данных, даже если часть узлов или сеть работает нестабильно
Подходы к устранению расхождений между копиями данных при eventual consistency
Структуры данных.
Спроектированны так, чтобы изменения, сделанные независимо на разных узлах, могли быть объединены без конфликтов
Позволяет достичь согласованности без централизованного координирующего узла
Стратегия разрешения конфликта, когда сохраняется последнее по времени обновление.
Простая реализация, но возможна потеря промежуточных изменений
1. Согласованность: что этои почему с ней все так сложно
2. Проблемы согласованности в микросервисах и их решение
3. Согласованность, Репликация и БД по CAP
4. Паттерны для высокой масштабируемости
5. Руководство по Эффективному Взаимодействию
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25❤17👍5
Материалы по визуализации работы Apache Kafka и Rabbit MQ
🤩 Kafka Visualization
Наглядное представление взаимодействия продюсеров, брокеров, топиков и консьюмеров — в виде анимации или схемы
🤩 Kafka Visualization Showcase (видео, англ)
🤩 Симулятор брокера Apache Kafka: Kafka Visualization от компании SoftwareMill (обзор с пояснениями)
🤩 RabbitMQ Simulator
Онлайн-песочница для изучения основ RabbitMQ и тестирования сценариев работы с очередями без установки
🤩 RabbitMQ Simulator. Песочница брокера сообщений (гайд как использовать)
🔹 Kafka vs RabbitMQ: сравнение по пунктам
➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿
🧑🎓 Больше полезного в базе знаний по системному анализу
Наглядное представление взаимодействия продюсеров, брокеров, топиков и консьюмеров — в виде анимации или схемы
Онлайн-песочница для изучения основ RabbitMQ и тестирования сценариев работы с очередями без установки
Please open Telegram to view this post
VIEW IN TELEGRAM
Softwaremill
SoftwareMill Kafka Visualization
Using the Kafka Visualization tool you can simulate how data flows through a replicated Kafka topic, to gain a better understanding of the message processing model.
👍32🔥15❤7😱2🎉2
Микросервисная архитектура (MSA) — подход, когда система разбивается на небольшие независимые сервисы
У MSA есть недостатки, которые важно учитывать при проектировании
В монолите транзакции управляются на уровне БД (ACID). В MSA данные распределены, и обеспечение согласованности требует сложных решений
Практики:
Межсервисные вызовы (HTTP, gRPC и тд) добавляют сетевые задержки, что может привести к ухудшению UX
Практики:
При десятках и сотнях сервисов сложно локализовать источник ошибки и собрать полную картину работы
Практики:
Каждый сервис может иметь свою БД, конфигурацию и зависимости. Интеграционное тестирование всей системы требует поднятия множества сервисов
Практики:
Каждый сервис хранит свою копию данных → возможны расхождения
Практики:
1. Микросервисная архитектура в разработке приложений: преимущества и недостатки
2. Микросервисная архитектура
3. Аутентификация и авторизация в проекте с микросервисной архитектурой: стратегии, практический пример
4. Микросервисная архитектура, ее паттерны проектирования и особенности
5. Микросервисы: плюсы, минусы, когда и зачем внедрять
📚 Книги
1. Крис Ричардсон. Микросервисы. Паттерны разработки и рефакторинга
2. Сэм Ньюмен. Создание микросервисов
3. Микросервисы. От архитектуры до релиза(Ронни Митра, Иракли Надареишвили)
4. Изучаем OpenTelemetry: современный мониторинг систем (2025) - Паркер Остин, Янг Тед
#микросервисы #архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥29❤21👍9👏2
Ретраи (retries) в проектировании систем — механизм авто-повторения неудачных операций при временных сбоях (сетевых ошибках, перегрузке сервисов и тд)
В распределенных системах временные сбои— норма
Вызов "повторить при ошибке" может усугубить проблему
Виды ошибок
Не все ошибки равны: ретраить можно только временные сбои.
Постоянные ошибки повторять бесполезно и вредно для ретраев
Временные сбои, которые могут исчезнуть при повторной попытке
Типичные кейсы повторяемых ошибок:
Таймауты TCP, Connection Reset
HTTP 429 (Too Many Requests)
пример: пльзователь массово экспортирует данные → API временно ограничивает запросы
HTTP 5xx (503, 504)
пример: (HTTP 503) сервис перегружен в час пик
Дедлоки БД, оптимистичные блокировки
пример: деадлоки БД - два клиента одновременно редактируют один заказ
Клиент отправил невалидные данные (например, буквы в поле "Цена"). Повторы бесполезны
Ресурс удален (например, несуществующий ID товара). Повторы создают нагрузку
Постоянное отсутствие прав (например, просмотр чужих заказов)
Стратегии повторов
Растущая задержка: 1с → 2с → 4с → 8с
Для снижение нагрузки на сбойный ресурс, дает ему время на восстановление
Когда к задержке добавляется случайное значение, чтобы 1000 запросов не повторились одновременно
Фактическая задержка = Базовая задержка + random(0, 30% от задержки)
Для предотвращение синхронизации запросов
Без джиттера: повтор всех 10к запросов одновременно → Коллапс платежной системы
С джиттером: запросы распределяются равномерно
a) Retry-After + Backoff
Использование заголовка HTTP Retry-After для точного определения задержки
HTTP/1.1 429 Too Many Requests
Retry-After: 15 ← Ждать ровно 15 секундb) Адаптивные ретраи
Динамический расчет задержки на основе:
- истории ответов сервиса
- текущей нагрузки
- SLA системы и тд
Максимальное число ретраев (напр. 3-5).
Это предотвращает бесконечные циклы.
После исчерпания попыток— фиксируется ошибка
- асинхронная обработка (отправка в очередь)
- уведомление мониторинга
Circuit Breaker ("предохранитель" системы)
Это "автомат", который временно блокирует вызовы сбойного сервиса
Периодически проверяет "полуоткрытое" состояние.
Связать с SLA и поведением системы при отказе.
Состояния брейкера:
Система работает нормально
После 5 ошибок за 1 мин
- потерю денег за SMS
- перегрузку очереди сообщений
- каскадные сбои
1. Хороший ретрай, плохой ретрай, или История одного падения
2. Отложенные ретраи силами RabbitMQ
3. Как работать над перфомансом веб-приложения: опыт Авто.ру|
4. Лучшие практики создания отказоустойчивых систем
📚 Паттерны проектирования API - Джей Гивакс (Часть IV. Безопасность)
#проектирование #api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35❤27🔥15😱1
Идемпотентность — свойство операции, гарантирует, что повторное выполнение одной и той же операции приведёт к такому же результату, как и первое выполнение
Т.е. если отправить один и тот же запрос 10 раз, результат должен быть таким же, как если отправить его один раз
Если же деньги спишутся дважды — нарушение идемпотентности
В распределённых системах сетевая ненадёжность, таймауты и ретраи делают это свойство критически важным
Примеры проблем обеспечения идемпотентности
Примеры последствий отсутствия идемпотентности
Подходы к реализации идемпотентности
Уникальный id запроса (Request ID)
Клиент генерирует уникальный ID (UUID) для каждой бизнес-операции и передаёт в каждом запросе (например, в HTTP-заголовке Idempotency-Key)
Сервер, получив запрос, проверяет, не обрабатывался ли уже запрос с таким ID
Подходит для идемпотентных POST-запросов в API (н-р, создание платежа, заказа)
Журналирование и Outbox-паттерн
Паттерн для надежной отправки сообщений в брокер в контексте транзакции с БД
Микросервисные асинхронные интеграции, где критична гарантия доставки события после записи в БД
Exactly-Once на уровне брокеров
Брокеры предлагают встроенные механизмы для обеспечения семантики "точно один раз"
В проектах на Kafka, где требования к надёжности обработки потоков данных крайне высоки
1. Идемпотентность: что это, примеры и применение в API
2. Как сделать хорошую интеграцию? Часть 2. Идемпотентные операции – основа устойчивой интеграции
3. История одного идемпотентного метода
4. Идемпотентность в такси-приложении: кейс из практики
5. Стажёр Вася и его истории об идемпотентности API
6. Важность идемпотентности в распределенных системах
📚 Книги
1. Высоконагруженные приложения - Мартин Клеппман (Глава 11)
2. Создание микросервисов - Сэм Ньюмен (Глава 12)
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍33❤16🔥6👏1
Forwarded from Библиотека Системного Аналитика
Масштабируемые_данные_Лучшие_шаблоны_высоконагруженных_архитектур.pdf
6.7 MB
Масштабируемые данные.
Лучшие шаблоны высоконагруженных архитектур.
✍️ Автор: Питхейн Стренгхольт
🗓 Год издания: 2022
🔤 Язык: русский
📚 Объём: 368 стр
Посвящена современному управлению данными и масштабируемым архитектурам, необходимым для работы с большими объемами информации.
В ней рассматриваются:
💙 основы управления данными – что это такое, почему оно важно и как развивается в эпоху цифровой трансформации.
💙 ключевые архитектурные подходы – хранилища данных (только для чтения), API, потоковая обработка и их интеграция в единую систему.
💙 сложности работы с данными – проблемы интеграции, устаревание классических хранилищ, управление метаданными и безопасность.
💙 практические шаблоны и решения – как выбирать подходящие модели распределения данных, масштабировать их потребление и обеспечивать целостность.
💙 влияние новых технологий – гибридные облака, распределенные сети и их роль в архитектуре данных.
Книга сочетает теорию и практику, подойдет для архитекторов, аналитиков, специалистов по соблюдению требований и управлению
Обзор книги на Хабр
#проектирование
Лучшие шаблоны высоконагруженных архитектур.
✍️ Автор: Питхейн Стренгхольт
🗓 Год издания: 2022
🔤 Язык: русский
📚 Объём: 368 стр
Посвящена современному управлению данными и масштабируемым архитектурам, необходимым для работы с большими объемами информации.
В ней рассматриваются:
Книга сочетает теорию и практику, подойдет для архитекторов, аналитиков, специалистов по соблюдению требований и управлению
Обзор книги на Хабр
#проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥10👍3⚡1
Apache Kafka - платформа для потоковых данных
Включает:
Kafka Streams
Библиотека для обработки потоков событий с возможностью:
Архитектурная идея: микросервисный подход к потоковой обработке
Kafka Streams инкапсулирует логику обработки в независимое приложение, оно масштабируется вместе с кластером Kafka
Хранение данных между обработками
Для этого используется:
Если приложение перезапускается, то загружает данные из этого топика и продолжает работу с того же места
По умолчанию Kafka Streams хранит состояние локально, но обработанные данные можно записывать во внешние БД или облачные хранилища
Примеры использования
Kafka Connect
Фреймворк для масштабируемого ввода/вывода данных между Kafka и внешними системами
Решает задачи интеграции с различными источниками
Источник (JDBC Connector) читает изменения из БД с помощью механизма изменения данных Debezium, а приемник (Elasticsearch Connector) загружает данные в поисковый индекс для быстрого поиска
Особенности
ksqlDB
СУБД для потоковой обработки
Например, обнаружение пользователей, выполняющих более 100 действий в минуту, с отправкой уведомлений в систему безопасности
Особенности
Применение: создание реальных дашбордов, реализация простых правил бизнес-логики, мониторинг качества данных
1. Kafka Streams (official site)
2. Экосистема Apache Kafka: Kafka Streams, Kafka Connect
3. Потоковая обработка данных с помощью Kafka Streams: архитектура и ключевые концепции
4. Под капотом Kafka Connect: источники, приемники и коннекторы
5. ksqlDB
6. ksqlDb или SQL как инструмент обработки потоков данных
📚 Книги
1. Kafka Streams и ksqlDB: данные в реальном времени - Сеймур Митч
2. Kafka в действии - Дилан Скотт, Виктор Гамов и Дейв Клейн (Глава 12)
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍7🔥5⚡1
Debezium - распределенная платформа с открытым исходным кодом, которая превращает существующие БД в стриминговые источники событий
Оптимален когда нужна
Архитектура и компоненты
Работает как набор коннекторов для Apache Kafka Connect
Каждый коннектор специализируется на конкретной СУБД и реализует протокол репликации этой базы
Основные компоненты
С помощью Debezium Engine события можно получать напрямую в приложение или транслировать в другие брокеры: RabbitMQ, Pulsar, Redpanda
Принцип работы
БД → журнал транзакций → Debezium connector → Kafka Connect → Kafka topic → потребитель (микросервис, аналитическая система, хранилище)
Процесс обработки изменений от журнала до топика Kafka
Коннектор подключается к БД с правами репликации
При первом запуске коннектор создает снимок данных
Последовательно читает таблицы и генерирует события создания для каждой строки
Этот процесс гарантирует, что все существующие данные попадут в поток событий
После завершения снимка коннектор переключается на чтение транзакционного журнала. Отслеживает позицию последнего обработанного события и продолжает чтение с этой точки при рестарте
Каждая запись в журнале парсится и преобразуется в событие JSON / Avro
Debezium обрабатывает различные типы данных СУБД, включая XML и пользовательские типы.
События отправляются в топики Kafka. Коннектор использует семантику at-least-once, что требует идемпотентной обработки на стороне потребителей.
Примеры использования
Проблемы и риски
1. Официальный сайт
2. CDC в Yandex Data Transfer: гид по технологии с примерами
3. Что такое Debezium и для чего используется
4. Знакомство с Debezium — CDC для Apache Kafka
5. Что такое Debezium: подробная инструкция по применению
6. Debezium Architecture
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22🔥7👍4⚡1
gRPC реализует парадигму удаленного вызова процедур (RPC), где клиент вызывает методы на сервере так, будто они находятся в одном процессе
Protocol Buffers
Процесс разработки с gRPC начинается с проектирования контракта в proto-файлах
Контракт (.proto файл) — единая точка, в которой описываются:
На основе proto-файлов автоматически генерируется клиентский и серверный код для разных языков
Здесь хранятся данные и функциональные контракты в виде proto-файла
gRPC Interceptors
Interceptor ("перехватчик") — компонент, который позволяет внедрять пользовательскую логику в обработку вызовов gRPC на стороне клиента / сервера
Предоставляет механизм для изменения запросов и ответов, а также для выполнения доп действий
Интерсепторы оперируют:
Protocol Buffers определяют
ЧТО передаетсяИнтерсепторы -
КАК обрабатываются вызовыСценарии использования
gRPC и Kafka
gRPC обрабатывает пользовательский запрос «здесь и сейчас»
Kafka распространяет событие дальше
Клиент → gRPC → Сервис А → Kafka → Сервис Б, Сервис В
1. Клиент через gRPC создает заказ
2. Сервис заказов обрабатывает команду "создать заказ"
3. Публикует событие "OrderCreated" в Kafka
4. Сервисы уведомлений и аналитики получают событие из Кафка
Примеры архитектуры с gRPC
Двунаправленные стримы - для управления видеопотоками
Безопасность в gRPC
gRPC изначально ориентирован на защищённые каналы:
1. Введение в gRPC: Основы, применение, плюсы и минусы
2. Что такое gRPC и Protobuf?
3. Способ организации gRPC контрактов и их автоматизация для микросервисов
4. Protocol Buffers: самая эффективная бинарная альтернатива текстовому формату
5. gRPC Interceptors (документация)
6. Перехватчики gRPC в .NET
📚 Изучаем OpenTelemetry: современный мониторинг систем (2025) - Паркер Остин, Янг Тед
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍9🔥9