Decide between a modular monolith, extracting a few services or full microservices, using explicit criteria, operational prerequisites, risks and an ADR ready to share.
Decide what to cache in Redis and how: a pattern per data type, key naming, jittered TTLs, invalidation, stampede protection, memory policy and sample code.
Design queues and workers for async tasks: technology choice, idempotent jobs, retries per error type, priorities, concurrency limits, the outbox pattern and monitoring.