Проверяет понимание архитектуры приема внешних событий и вопросов доверия к данным извне.
В событийно-ориентированной архитектуре внешние системы могут отправлять события в вашу систему. Если принимать их напрямую в бизнес-логику, вы рискуете получить некорректные данные, дубликаты или даже атаки. Поэтому слой приема события — это пограничный компонент, который выполняет несколько задач: принимает событие, проверяет его, преобразует в внутренний формат и передает дальше в обработчики.
Внешнее событие — это данные, которые вы не контролируете. Оно может быть изменено злоумышленником, содержать ошибки или не соответствовать ожидаемой структуре. Поэтому нельзя доверять событию без проверки. Основные меры: аутентификация источника (например, через API-ключи или JWT), проверка целостности (подпись или HMAC), валидация схемы (например, JSON Schema) и санитизация данных.
Предположим, внешняя система отправляет событие о новом заказе. Слой приема может выглядеть так:
// Псевдокод на Node.js
const express = require('express');
const app = express();
app.post('/events/order', (req, res) => {
const event = req.body;
// 1. Проверка подписи
if (!verifySignature(req.headers['x-signature'], event)) {
return res.status(401).send('Invalid signature');
}
// 2. Валидация схемы
if (!validateOrderSchema(event)) {
return res.status(400).send('Invalid event format');
}
// 3. Нормализация и сохранение
const normalized = normalizeOrder(event);
saveToQueue(normalized);
res.status(202).send('Accepted');
});Здесь слой приема изолирует внешний мир от внутренней логики. Если событие не прошло проверку, оно отклоняется, и система остается безопасной.
Слой приема события обязателен в любой системе, которая интегрируется с внешними источниками. Он обеспечивает безопасность, надежность и согласованность данных. Применяйте его всегда, когда событие приходит извне, чтобы защитить ядро системы от некорректных или вредоносных данных.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
Node.js
Networks
Ключевые слова
Подпишись на Node.js Developer в телеграм