Материалы по визуализации работы 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
1. Использовать множественное число для коллекций
2. Не добавлять лишние сегменты в путь
Не пытаться отразить всю модель данных в URL
Если
listing_id уникален — shop_id не нуженGET /listings/{listing_id}/options/{option_id}3. Не добавлять расширения в URL
GET /users.json Формат передачи должен определяться через HTTP-заголовки (например,
Accept) , не через URLGET /users и HTTP-заголовки настройка заголовков:Accept: application/json
4. Не возвращать массивы верхнего уровня
Объект позволяет легко добавить пагинацию и дополнительные поля без поломки обратной совместимости
[{"id":1}, {"id":2}] { "data": [{"id":1}, {"id":2}] }5. Не возвращать структуры-словари (map)
Словари ломают совместимость и неудобны для типизированных языков.
{ "data": [{ "id":"KEY1" }, { "id":"KEY2" }] }6. Добавлять префиксы к ID
Примеры:
Stripe: in_1MVpWEJVZPfyS2HyRgVDkwiZ
Shopify: gid://shopify/FulfillmentOrder/1469358604360
7. Не использовать 404 для “не найдено”
404 Not Found может означать сетевую ошибку или неверный URL410 Gone — сервер понял запрос, но объекта нет8. Ошибки в структурированном формате
{
"message": "Access denied",
"type": "Unauthorized",
"types": ["Unauthorized", "Security"],
"cause": { ... }
}9. Идемпотентность операций
Идемпотентность = повтор вызова не меняет результат
POST /orders
Idempotency-Key: abc123
Если запрос повторится — сервер вернёт 409 CONFLICT и ID уже созданного ресурса:
{
"message": "Duplicate",
"old_id": "ORD123"
}Клиент уверен, что заказ не задублировался
10. ISO8601 для даты и времени
А также использовать ISO8601 для интервалов и длительностей
"2023-12-21T11:17:12.34Z" "1703157432340"#api
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥38👍20❤16😢1
Forwarded from Библиотека Системного Аналитика
Хононов_В_Изучаем_DDD_предметно_ориентированное_проектирование_2024.pdf
18.2 MB
Изучаем DDD — предметно-ориентированное проектирование
✍️ Автор: Влад Хононов
🗓 Год издания: 2024
🔤 Язык: русский
📚 Объём: 320 стр.
Книга посвящена методологии DDD (предметно-ориентированному проектированию), что особенно актуально в условиях дробления предметных областей и усложнения бизнес-взаимодействий.
Рассказано
🔹 как оценить масштаб и сложность предметной области (с примерами анализа предметной обалсти)
🔹 измерить темпы ее развития, учесть необходимые зависимост
🔹 про архитектурные паттерны и паттерны взаимодействия, EventStorming, SOA, Data Mesh
🔹 применять DDD и структурировать создаваемое ПО эффективно вписывая его в сеть данных (Data Mesh)
🔹 о порядке развития проекта синхронно с изменениями в его бизнес-контексте
Знание принципов и шаблонов предметно-ориентированного проектирования будет полезно инженерам-программистам всех уровней: младшего, старшего, штатного и руководящего.
🔹 Пост про DDD
📺 Интервью с автором Learning Domain-Driven Design • Влад Хононов
#архитектура #проектирование
✍️ Автор: Влад Хононов
🗓 Год издания: 2024
🔤 Язык: русский
📚 Объём: 320 стр.
Книга посвящена методологии DDD (предметно-ориентированному проектированию), что особенно актуально в условиях дробления предметных областей и усложнения бизнес-взаимодействий.
Рассказано
Знание принципов и шаблонов предметно-ориентированного проектирования будет полезно инженерам-программистам всех уровней: младшего, старшего, штатного и руководящего.
#архитектура #проектирование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍8🔥4
Workflow-движок — система, которая управляет выполнением последовательности шагов (задач) по описанной логике процесса:
Нужен, когда в системе есть повторяющиеся, формализованные процессы:
состоящие из нескольких этапов
с предсказуемыми переходами и условиями
Как работает
Компоненты:
форматы: BPMN, JSON, YAML, собственные DSL
Принцип:
Типовой цикл:
1. запуск — процесс стартует по событию или API-запросу
2. исполнение — движок выполняет шаги, проверяет условия переходов
3. ожидание — если требуется ввод данных пользователем или внешним сервисом
4. завершение — финальный статус, логирование результатов
Примеры
В архитектуре
Когда использовать
Не стоит использовать:
Workflow vs. BPM
Примеры ПО
1. Workflow Core — движок бизнес-процессов для .Net Core
2. Как мы делали свой движок Workflow
3. Интеграция с «Госуслугами». Применение Workflow Core (часть II)
4. Интеграционная платформа в The Platform: что умеет, как работает и зачем ей Workflow Engine
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍6🔥5👎1🤔1
JSON Patch — формат для описания изменений в JSON-документе
Вместо отправки документа для обновления, отправляется набор операций («патч»), которые нужно применить
Примеры применения
Пример
Исходно:
{ "user": "Иван", "age": 30 }Патч (набор операций):
[
{ "op": "replace", "path": "/age", "value": 31 },
{ "op": "add", "path": "/city", "value": "Москва" }
]
Результат:
{ "user": "Иван", "age": 31, "city": "Москва" }Особенности
RFC 6902 определяет только 6 операций:
- add
- remove
- replace
- move
- copy
- test
Расширять этот набор другими операциями нельзя, если нужно сохранить совместимость с системами, реализующими RFC 6902
Если любая операция в массиве завершается ошибкой (например, путь не найден для
remove, или операция test возвращает false), весь патч должен быть откачен, и документ остается без измененийЭто гарантирует целостность
Последующие могут зависеть от результата предыдущих
move) данные из /a в /b, сначала убедиться, что /b не существует, или удалить его в предыдущей операцииJSON Patch vs JSON Merge Patch
Отправляется фрагмент, который нужно "наложить" на целевой документ:
- значения заменяются
-
null означает "удалить поле"- отправляются только изменяемые поля
Когда использовать
1. Оптимизация трафика при синхронизации состояний через Jsonpatch
2. Убегайте от праздника «пустых» проверок: правильно выполняйте PATCH с помощью JSON Patch
#проектирование #api
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥10👍6💩2👏1
Брейншторм (мозговой штурм) — групповой метод генерации идей для решения задачи или поиска вариантов
Это не обсуждение и не поиск лучшего решения
Проводится в два этапа:
Роли участников
Зачем нужен
Когда не нужен
Пример
- обновление страницы оплаты
- проблемы у платежного провайдера
- изменения в анти-фрод системе
- ошибка в кешировании данных
- сезонный фактор
Cоздается список направлений для дальнейшей проверки
Базовые правила
1. Запрещена критика идей
2. Количество важнее качества. Цель — заполнить доску вариантами
3. Поощряются нестандартные идеи
4. Идеи можно развивать и комбинировать
Техники
Когда использовать: простые открытые задачи
Как проводится: участники устно предлагают идеи, фасилитатор фиксирует
Пример: генерация вариантов пользовательских сценариев
Когда: улучшение текущего решения
Как: генерация идей по наводящим вопросам
Пример: Оптимизация бизнес-процессов
Когда: cложные задачи, конфликт мнений
Как: участники мыслят в заданных ролях
Пример: проработка архитектурных альтернатив
Когда: поиск рисков и уязвимостей
Как: генерация идей как ухудшить ситуацию
Пример: выявление рисков реализации, ошибок в требованиях, потенциальных отказов системы.
1. Топ 8 инструментов для мозгового штурма
2. 15 способов превратить мозговой штурм в результат «огонь»
3. Пять техник мозгового штурма
4. Что такое мозговой штурм и как правильно его проводить в компании
5. Как провести мозговой штурм: основные правила, методы и ошибки
#управление_проектами
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3🔥1