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
⚫️ Stepik
#архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤45🔥21👍6👎1🎉1
Сбор требований от всех стейкхолдеров (бизнес-заказчики, фронтенд-разработчики, мобильные разработчики и тд) и трансформировать их в контракт
Формируется спецификация, которая становится единым источником для всех участников.
Ключевые элементы:
Реализовать логику API по спецификации
Процесс включает:
Комплексная проверка надежности, безопасности и производительности API
Основа для тестирования: тестовые сценарии и данные
Виды тестирования:
Обеспечить быструю, безопасную и предсказуемую публикацию изменений в API
Ключевые процессы:
Централизованное управление трафиком, безопасностью и версиями API через API-шлюз
Основные функции:
Гарантия отказоустойчивости и производительности API в проде
Основные функции:
Сбор и анализ метрик
Примеры метрик:
Эти этапы в большей степени относятся к продуктологам и бизнес-аналитикам
Примеры метрик для оценки эффективности продвижения API:
1. Активные пользователи (Active Users)
2. Новые регистрации (New User Registrations)
3. Количество API-вызовов (API Calls)
4. Метрики производительности
5. Бизнес-метрики
Для монетизации необходимо спроектировать систему тарификации и метрики для нее, заложить логику в систему аналитики и биллинга.
Минимизировать ущерб для потребителей при выводе устаревшей версии API.
Процесс вывода:
1. Жизненный цикл API. Статистика и нюансы
2. Жизненный цикл API
3. 15 важнейших рекомендаций по проектированию REST API
4. Дизайн API и как его спроектировать
5. Лучшие практики разработки REST API: 20 советов
📚 Книги
1. API - Сергей Константинов
2. Паттерны проектирования API - Джей Гивакс
3. Тестирование веб-API - Марк Винтерингем
4. Проектирование веб-API - Арно Лоре
#api
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31👍9🔥6⚡1
Обратная совместимость — когда система может работать с более старыми клиентами или потребителями после внесения изменений в интерфейс или формат данных
В интеграциях это критически важно:
если одно приложение изменило контракт, а другое не успело обновиться
Виды совместимостей
Примеры обеспечения обратной совместимости
Практики:
deprecatedgRPC использует Protocol Buffers (protobuf)
Он изначально учитывает обратную совместимость
Практики:
deprecatedGraphQL более гибкий, чем REST, так как клиент сам выбирает нужные поля. Но есть риски.
Практики:
@deprecated вместо удаления. Клиенты будут видеть предупреждение./graphql/v2).Kafka — шина событий. Здесь контракт — формат сообщения.
Если продюсер изменил структуру, все консумеры должны понимать новый формат
Практики:
orders.v2)1. Обеспечение обратной совместимости gRPC API с помощью protolock в GitHub Actions
2. Постановка проблемы обратной совместимости
3. Интеграции глазами аналитика: 5 типичных ошибок, которые ломают систему
4. Как правильно разрабатывать API с поддержкой обратной совместимости
5. GraphQL: от восторга до разочарования
📚 Книги
API - Сергей Константинов (Раздел III. Обратная совместимость)
🐗 Высоконагруженные приложения. Программирование, масштабирование, поддержка - Мартин Клеппман
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤15👍5⚡1
Рассмотрим нисходящий подход проектирования БД
Процесс проектирования по шагам
Между этими этапами используется ER-диаграмма — инструмент визуализации
Задача: понять и описать какие данные нужны системе и как они связаны между собой
Основные шаги
Создание реляционной схемы. ER-модель преобразуется в формальную схему, готовую для реализации в реляционной СУБД (распространенный тип БД).
Основные шаги
Например, сущность «Пользователь» превращается в таблицу
users.У «Пользователя» будут поля:
id, name, email.- первичный ключ (
id) для уникальной идентификации строки- внешние ключи для связи между таблицами
- убрать повторы и избыточные данные
- проверить соответствие нормальным формам (1НФ, 2НФ, 3НФ)
Например, если в таблицу «Заказ» включить название товара, это приведет к дублированию
Решение: выделить отдельную таблицу «Товар» и связать через «Заказ–Товар»
Модель адаптируется под конкретную СУБД:
VARCHAR, INTEGER, DATE)1. Как работают базы данных в IT: разбор на примерах
2. Базы данных для системного аналитика. Краткий обзор на практике
3. Основы правил проектирования базы данных
4. Основы проектирования баз данных
5. Проектирование реляционных баз данных: основные принципы
📚 Книги
1. Основы баз данных (учебное пособие) - Кузнецов С. Д.
2. Путеводитель по базам данных - Владимир Комаров
3. Базы данных. Инжиниринг надежности - Кэмпбелл Лейн, Мейджорс Черити
4. Проектирование и реализация систем управления базами данных - Эдвард Сьоре
5. Основы технологий баз данных: учебное пособие - Новиков Б. А. и др
#проектирование #бд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40❤17🔥6
Жизненный цикл программного обеспечения (Software Development Life Cycle, SDLC) — структурированный процесс создания систем
Путь идеи от концепции до рабочего продукта
Фазы жизненного цикла ПО
Определяется цель проекта, его границы и заинтересованные стороны
Оценивается бизнес-ценность, риски и целесообразность разработки
Результат фазы — бизнес-кейс, дорожная карта проекта, первичные требования и оценка ресурсов
Вывляются:
Выходные артефакты: ТЗ или спецификация требований к ПО (SRS), модели процессов, диаграммы прецедентов
Решается как система будет удовлетворять требованиям
Результат — набор архитектурных и дизайнерских документов
Пишется код в соответствии с архитектурой и требованиями
Ревью кода, сборка и автоматизация сборочного процесса через CI/CD
На выходе — рабочие модули и инкременты системы
Проверяется соответствие продукта требованиям
Примеры тестирования:
Продукт разворачивается в целевой среде
Завершается релизом и переходом системы в эксплуатацию
После запуска система требует поддержки:
Фаза продолжается до момента окончательного вывода системы из эксплуатации
Модели жизненного цикла ПО
Подход к организации фаз SDLC определяется моделью: как эти фазы взаимодействуют друг с другом, их последовательность
Фазы выполняются строго последовательно: от анализа до сопровождения
Переход на следующую стадию возможен только после завершения предыдущей
Подходит для проектов с чётко определёнными и стабильными требованиями
Идея каскада с добавлением акцент на тестирование
Каждая стадия разработки имеет свой этап проверки и валидации
Продукт создаётся поэтапно, небольшими инкрементами. Каждый релиз добавляет часть функционала
Каждый инкремент проходит полный цикл SDLC (анализ, проектирование, кодирование, тестирование)
В результате пользователь постепенно получает готовые части системы
Комбинирует идеи каскадной и прототипной моделей
Каждая итерация проходит все фазы SDLC, но с акцентом на анализ рисков
Применяется для крупных и исследовательских проектов
Разработка короткими итерациями — спринтами (1–4 недели). Команда поставляет работающий инкремент продукта к концу каждого спринта.
Ориентирован на непрерывный поток задач и визуализацию процессов
Основной инструмент — канбан-доска, где задачи перемещаются по статусам
1. Этапы жизненного цикла разработки ПО или что такое SDLC?
2. SDLC
3. База про жизненный цикл разработки ПО (SDLC): этапы, виды моделей и их различия
4. Про семь основных методологий разработки
5. Модели жизненного цикла ПО
📚 Книги
Управление проектным бизнесом от Алексея Васильева
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍10🔥4
Event Storming — техника коллективного моделирования бизнес-процессов
Строится вокруг событий (domain events), которые отражают значимые изменения состояния системы (заказ создан», платёж подтверждён, товар доставлен)
Помогает
Примеры приименения
Основные принципы
Типы Event Storming-сессий
Используется для получения общего представления о домене
Позволяет увидеть ключевые процессы и зависимости между ними
Детализирует конкретный бизнес-процесс
Помогает определить события, команды и участников внутри него
Уточняет модель до уровня архитектуры и bounded contexts
Используется при проектировании микросервисов и взаимодействий между ними
Ключевые «строительные блоки»
Факт, который уже произошел в системе.
Часто является реакцией на предыдущее событие
Это "кластер" из связанных сущностей (например, заказ с его позициями), который обрабатывает команды и порождает события
Формулируется как "Когда событие X, тогда команда Y"
Пример как проходит Event Storming
1. Определить границы процесса
2. Зафиксировать доменные события в прошедшем времени
3. Добавить команды, которые инициируют события:
4. Указать акторов
5. Добавить агрегаты и сущности
6. Зафиксировать политики и правила
7. Сгруппировать события по смыслу
8. Проверяются связи, исключения, альтернативные сценарии
9. Результат: карта событий, отражающая процессы и зависимости
1. Event storming
2. Моделирование микросервисов с помощью Event storming
3. Event Storming: как построить модель вокруг событий
4. Введение в Event Modeling
5. 10 аналогов Miro от российских и иностранных разработчиков
📚 Книги
Предметно-ориентированное проектирование: паттерны, принципы и методы - Скотт Миллетт, Ник Тью
#управление_проектами
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤9👍5👏2
Forwarded from Библиотека Системного Аналитика
Грокаем_безопасность_веб_приложений_Макдональд_Малькольм.pdf
12 MB
Грокаем безопасность веб-приложений
✍️ Автор: Макдональд Малькольм
🗓 Год издания: 2025
🔤 Язык: русский
📚 Объём: 336 стр.
Практическое руководство по безопасности для веб-приложений.
◾️ Раскрываются основные принципы защиты
◾️ Подробно разбираются наиболее распространенные уязвимости веб-приложений — от браузера до сервера.
Книгу можно изучать последовательно или выборочно.
Примеры кода приведены на разных языках, что делает материал наглядным и универсальным.
Издание будет полезно как новичкам в вопросах безопасности, так и опытным специалистам для систематизации и обновления знаний.
#безопасность
✍️ Автор: Макдональд Малькольм
🗓 Год издания: 2025
🔤 Язык: русский
📚 Объём: 336 стр.
Практическое руководство по безопасности для веб-приложений.
Книгу можно изучать последовательно или выборочно.
Примеры кода приведены на разных языках, что делает материал наглядным и универсальным.
Издание будет полезно как новичкам в вопросах безопасности, так и опытным специалистам для систематизации и обновления знаний.
#безопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍19❤2