← Week 1: Design & Architecture

Day 1: Project Specification

Phase 7 · Sep 23, 2026

← Week 1: Design & Architecture

Agenda (2–3 hours)

  • Read (60 min): Review the full course — phases 1–6 capstone concepts; identify patterns to apply in the project
  • Design (60 min): Write the project specification document: problem statement, users, functional requirements, non-functional requirements
  • Plan (60 min): Identify all external dependencies and integrations; draw the high-level system diagram; list the unknown risks
← Week 1: Design & Architecture

Project: Distributed Task Queue with Observability

A production-grade distributed task queue where:

  • Clients submit tasks via a gRPC API
  • Tasks are processed reliably by a worker pool (at-least-once, idempotent)
  • State is persisted in DynamoDB with event sourcing
  • Workers coordinate via SQS FIFO queues
  • The full system is deployed on ECS Fargate
  • All three observability signals are wired up
← Week 1: Design & Architecture

Functional Requirements

  1. Submit a task with payload, priority, and idempotency key → returns task ID
  2. Get task status by ID → returns status, timestamps, retry count
  3. Workers claim and process tasks exactly once per attempt
  4. Failed tasks retry up to 5 times with exponential backoff; then go to DLQ
  5. Task status transitions are durable — survive worker crash mid-processing
← Week 1: Design & Architecture

Non-Functional Requirements

Property Target
Submit latency P99 < 100ms
Task processing start < 5 seconds from submission
Availability 99.9% (43 min/month budget)
Throughput 500 tasks/second sustained
Observability Full traces, metrics, logs; alert on error rate and queue depth
← Week 1: Design & Architecture

Key Decisions to Resolve This Week

  1. How do workers claim tasks without double-processing? (visibility timeout vs conditional writes)
  2. What is the event schema for the event store?
  3. How does the API service interact with both DynamoDB and SQS?
  4. What does the DLQ processing workflow look like?

Tomorrow: system design — decomposing the project into services and data flows.