helland_skill

This skill helps design scalable distributed data systems inspired by Pat Helland, emphasizing idempotency, entity-based design, and messaging over distributed
  • Python

3

GitHub Stars

1

Bundled Files

2 months ago

Catalog Refreshed

4 months ago

First Indexed

Readme & install

Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.

Installation

Preview and clipboard use veilstrat where the catalogue uses aiagentskills.

npx veilstrat add skill copyleftdev/sk1llz --skill helland

  • SKILL.md11.2 KB

Overview

This skill captures Pat Helland's practical patterns for designing scalable, distributed data systems that avoid reliance on multi-node ACID transactions. It teaches idempotency-first operations, entity-based partitioning, outbox messaging, and saga-based coordination to build resilient systems at scale. Use it to design systems that must remain correct under retries, partial failures, and high concurrency.

How this skill works

The skill inspects design choices and recommends patterns: treat domain objects as independently consistent entities, require request IDs for idempotency, and move cross-entity coordination into messaging and sagas rather than 2PC. It prescribes inside-vs-outside data modeling, outbox publishing for reliable delivery, and compensating actions for multi-step workflows. It also maps concrete code patterns (idempotent operations, outbox, saga, request-response with correlation) to architecture decisions.

When to use it

  • Building services that must scale across many nodes where distributed transactions are infeasible
  • Designing APIs and internal messages that must be retry-safe and deduplicable
  • Coordinating multi-service workflows (payments, inventory, shipping) without 2PC
  • Modeling data for bounded consistency where entities own their state
  • Designing reliable messaging pipelines and outbox-based delivery

Best practices

  • Design around entities as islands of consistency, not normalized tables
  • Make every external operation idempotent using unique request IDs
  • Use the outbox pattern to atomically persist state and enqueue messages
  • Prefer sagas with compensating actions over distributed transactions
  • Keep external messages immutable, versioned, and minimal
  • Assume at-least-once delivery and build deduplication into handlers

Example use cases

  • E-commerce order processing: Order entity writes outbox messages to drive inventory, payment, and shipping sagas
  • Payment processing: Idempotent charge operations with processed-request records to enable safe retries
  • Inventory reservation: Local transactions inside inventory service, with outbox messages informing order progress
  • Cross-service refunds: Saga coordinates refund, release of reserved items, and customer notifications with compensating steps
  • Event-driven read models: Convert rich internal entities to simple, immutable external events for other services

FAQ

Designate a single owning entity for the critical piece or accept trade-offs: perform the operation synchronously inside one entity, or use a tightly-scoped coordination service but expect limited scalability.

How do I prevent duplicate side effects with at-least-once delivery?

Include unique request or correlation IDs and record processed requests atomically with state changes. Use idempotent handlers and deduplication tables to ignore repeats.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational