Skip to content

Software Architecture Design

Weixian edited this page May 26, 2026 · 13 revisions

Concepts

  • Composite root - wires up the dependency injection container at startup

Which architecture should I pick?

Small Projects


Characteristics

  • Simple CRUD with simple business logic that does not grow complex.
  • Proof of concept or minimum viable product
  • Infrastructure components like cache, database, storage and more is stable and do not change.

Software Architecture

Layered Architecture


Medium Projects


Characteristics

  • Simple CRUD with simple business logic that does not grow complex.
  • Proof of concept or minimum viable product
  • Infrastructure components like cache, database, storage and more is stable and do not change.

Software Architecture


Medium-Large Projects

Characteristics

Software Architecture


Logging

API layer logs:

request received correlation ID / trace ID authenticated user / tenant response status unhandled exception

Application layer logs:

use case started important decisions or branches use case completed business failure that matters operationally

Domain layer logs:

generally no logging maybe only in rare cases if your domain services are acting like transaction scripts and you really need observability even then, keep it minimal

Infrastructure layer logs:

external calls failed DB retries / timeouts queue publish failures HTTP client failures adapter-specific technical details

  1. Agile Delivery
    1. Product Requirement Template
    2. Documenting Product Requirements
    3. Estimation & Sizing
  2. DevOps
    1. Gitlab Flow with Release Branches
    2. DevOps Pipelines
  3. Software Architecture Design
    1. Agent Engineering
    2. Logging
  4. Tech Stack
  5. Testing & Quality
  6. Observability & Operations

Clone this wiki locally