Event-Driven Architecture taste — промпт для ChatGPT: что делает
Задаёт набор правил распределённых систем: использование событий в прошедшем времени, outbox паттерн, идемпотентные консьюмеры и саги вместо распределённых транзакций.
Открыть на GitHubЧто делает Event-Driven Architecture taste
Промпт содержит свод инженерных установок с оценками уверенности для проектирования асинхронных сервисов. Он разграничивает факты и команды: события сообщают о совершённых действиях (OrderPlaced), а команды адресуются единственному владельцу (ChargeCard). Правила требуют версионировать схемы через Avro, Protobuf или JSON Schema с проверкой совместимости в CI.
Для надёжности пересылки предписан паттерн transactional outbox, устраняющий расхождения между базой данных и очередями. Консьюмеры строятся идемпотентными с ключом дедупликации, а сбойные сообщения уходят в dead-letter queue после ограниченных повторов с экспоненциальной задержкой. Для координации многошаговых процессов используются саги с явными компенсирующими действиями.
Без обязательного correlation id и контекста трассировки в заголовках сквозная диагностика цепочки событий ломается.
Какие задачи решает
- разграничить доменные события и команды управления в архитектуре сервисов
- исключить расхождения между базой данных и брокером через transactional outbox
- настроить идемпотентную обработку входящих очередей с ключами дедупликации
- заменить распределённые транзакции сагами с компенсирующими действиями
Примеры запросов агенту
- Спроектируй схему публикации событий для сервиса заказов с учётом паттерна outbox.
- Проверь архитектуру обработки очередей и предложи стратегию изоляции poison messages через DLQ.
- Составь структуру конверта события с обязательными correlation id и causation id.
Как установить Event-Driven Architecture taste
Как использовать
Вставьте текст в начало диалога или в инструкции проекта
Вручную: положить файлы
.claude/commands/prompts.csv.mdВопросы о Event-Driven Architecture taste
Как установить Event-Driven Architecture taste в Claude Code?
Сохраните команду в файл .claude/commands/prompts.csv.md. Для работы в ChatGPT скопируйте текст промпта в окно диалога или в пользовательские инструкции.
Что делает Event-Driven Architecture taste?
Промпт задаёт строгие архитектурные принципы: transactional outbox, идемпотентность консьюмеров, версионирование схем через Avro или Protobuf и изоляцию сбойных сообщений в DLQ.
Какие метаданные должны входить в конверт каждого события?
В каждый конверт включаются идентификатор события, тип, версия, отметка времени, а также correlation id и causation id.
Исходный текст
prompts.csv · CC0-1.0
# Event-Driven Architecture taste of a distributed systems engineer - Use events to announce facts that already happened (OrderPlaced), and commands only for requests to a single owner (ChargeCard). Confidence: 0.90 - Name events in the past tense using domain language, never after the producing table or service. Confidence: 0.85 - Define every event with a versioned schema (Avro, Protobuf or JSON Schema) in a registry and check compatibility in CI. Confidence: 0.90 - Evolve schemas only with backward-compatible changes; publish a new event type for breaking changes. Confidence: 0.85 - Assume at-least-once delivery and make every consumer idempotent with a deduplication key. Confidence: 0.95 - Publish events through the transactional outbox pattern so database writes and messages never diverge. Confidence: 0.90 - Include event id, type, version, timestamp, correlation id and causation id in every envelope. Confidence: 0.85 - Keep event payloads self-contained enough for common consumers, but do not dump whole aggregates. Confidence: 0.75 - Partition by aggregate id when ordering matters, and never rely on global ordering. Confidence: 0.85 - Route poison messages to a dead-letter queue after bounded retries with exponential backoff and jitter. Confidence: 0.90 - Alert on consumer lag and dead-letter queue depth, not just on broker health. Confidence: 0.90 - Propagate trace context through message headers so one request can be followed across services. Confidence: 0.85 - Use sagas with explicit compensating actions for multi-service workflows instead of distributed transactions. Confidence: 0.80 - Prefer choreography for simple flows and a dedicated orchestrator once a workflow has more than a few steps. Confidence: 0.70 - Reach for event sourcing only where an audit trail or temporal queries are real requirements. Confidence: 0.75 - Make replays safe: consumers must tolerate reprocessing history from any offset. Confidence: 0.80 - Set retention to match how long consumers might need to rebuild state, and document it per topic. Confidence: 0.70 - Give each topic one owning team that controls its schema and lifecycle. Confidence: 0.85 - Keep synchronous calls for queries that need an immediate answer; do not force request-response through a queue. Confidence: 0.80 - Test consumers with contract tests against the registered schema and producers with outbox integration tests. Confidence: 0.80 - Keep a living catalog (AsyncAPI or similar) of topics, producers and consumers. Confidence: 0.75
© f · CC0-1.0 · f/prompts.chat