1. Software Architecturehistorical

    Architecture as system-level decisions about boundaries, dependencies, deployment, data, quality attributes, and evolutionary trade-offs.

  2. Architecture Patternshistorical

    Choosing monolith, layered, event-driven, microservice, read/write split, and domain-oriented patterns from constraints rather than fashion.

  3. Monolithic Architecturehistorical

    A single deployable application and the trade-offs between operational simplicity, modularity, scaling, and organizational boundaries.

  4. Layered Architecturehistorical

    Separating presentation/application/domain/infrastructure responsibilities while controlling dependency direction.

  5. Read/Write Separation Architecturehistorical

    Separating write authority from read replicas/projections and handling replication lag, read-your-writes, routing, and failover.

  6. Event-Driven Architecturehistorical

    Producing and reacting to events with asynchronous coupling, delivery semantics, ordering, idempotency, and observability.

  7. Domain-Driven Designhistorical

    DDD concepts: bounded contexts, ubiquitous language, aggregates, entities, value objects, domain services, and context integration.

  8. Microservices Architecturehistorical

    Independently deployable service boundaries with explicit data ownership and the distributed-systems/operational costs they introduce.

  9. OpenID Connecthistorical

    Identity layer on OAuth with ID tokens, UserInfo, issuer/audience/nonce validation, and authentication sessions.

  10. JSON Web Token (JWT)historical

    Signed token format, claims, validation, expiration, key management, and common security misconceptions.

  11. OAuth 2.xhistorical

    Delegated authorization with resource owner, client, authorization server, resource server, scopes, access tokens, and secure redirect flows.

  12. Designing a Configuration Centerhistorical

    Versioned configuration distribution with environments, validation, watches, rollout, caching, security, and rollback.

  13. Designing Load Balancinghistorical

    Endpoint discovery, selection algorithms, health/outlier detection, connection reuse, locality, weighting, and overload-aware routing.

  14. Designing a Service Registryhistorical

    Service membership registration, discovery, leases/health, staleness, replication, client caches, and failure handling.

  15. Designing an API Gatewayhistorical

    Gateway routing and cross-cutting policy with authentication, limits, deadlines, observability, resilience, and safe ownership boundaries.

  16. Designing an Observability Systemhistorical

    Metrics, logs, traces, events, SLOs, correlation, storage, alerting, dashboards, and cost/cardinality control.

  17. Designing Distributed Tracinghistorical

    Trace/span context propagation, sampling, storage, causality, asynchronous work, and correlation with metrics/logs.

  18. Designing Resilience Componentshistorical

    Timeouts, deadlines, retries, circuit breakers, bulkheads, rate limits, load shedding, fallbacks, and idempotency.

  19. Designing Logginghistorical

    Structured logs, severity, correlation, context, sampling, retention, privacy, and operational querying.

  20. Designing Metrics Monitoringhistorical

    Metric naming/types, labels, cardinality control, RED/USE signals, SLOs, aggregation, and alerting.

  21. Designing Authentication and Authorizationhistorical

    Identity proof, sessions/tokens, authorization policy, least privilege, service identity, revocation, and audit.

  22. Entity–Relationship Diagramshistorical

    Modeling entities, attributes, identifiers, and relationships for data-oriented system design.

  23. UMLhistorical

    Using UML selectively to communicate structural and behavioral views of software systems.

  24. Class Diagramshistorical

    Modeling types, interfaces, responsibilities, associations, inheritance, and composition.

  25. Sequence Diagramshistorical

    Modeling time-ordered interactions, calls, asynchronous messages, branches, and failure paths between participants.

  26. Flowchartshistorical

    Representing procedural control flow, decisions, loops, and terminal outcomes.

  27. State Diagramshistorical

    Modeling finite states, transitions, events, guards, and lifecycle invariants.

  28. Component Diagramshistorical

    Describing coarse-grained modules/components, provided interfaces, dependencies, and boundaries.

  29. Deployment Diagramshistorical

    Mapping software artifacts and services onto runtime nodes, networks, zones, and infrastructure.

  30. Architecture Diagramshistorical

    Communicating system boundaries, dependencies, data flows, deployment units, and operational context.

  31. Functional Options Patternhistorical

    Configuring constructors through composable option functions, especially in Go APIs.

  32. Function Types as Interfaceshistorical

    Using function values to satisfy small behavioral contracts and inject behavior without heavyweight objects.

  33. Event Sourcinghistorical

    Persisting domain changes as an append-only event history and rebuilding state through replay/projections.

  34. Publish–Subscribe Patternhistorical

    Decoupling event publishers and subscribers while handling delivery, ordering, replay, and failure semantics.

  35. Producer–Consumer Patternhistorical

    Decoupling work generation from processing with queues, bounded capacity, backpressure, and worker concurrency.

  36. Open–Closed Principlehistorical

    Designing stable boundaries so common extensions require less modification to trusted core code.

  37. Liskov Substitution Principlehistorical

    Ensuring subtypes preserve the behavioral contract expected from the base abstraction.

  38. Dependency Inversion Principlehistorical

    Keeping high-level policy independent from volatile low-level implementation details.

  39. Single Responsibility Principlehistorical

    Grouping behavior around a coherent responsibility and a focused reason to change.

  40. Interface Segregation Principlehistorical

    Keeping contracts focused so clients depend only on capabilities they actually use.

  41. Law of Demeterhistorical

    Reducing knowledge of distant object structure and avoiding brittle navigation through internal collaborators.

  42. Composition over Inheritancehistorical

    Reusing behavior through composition/delegation when subtype inheritance would create unnecessary coupling.

  43. Object-Oriented Design Principleshistorical

    A practical view of SOLID and related principles for controlling coupling, responsibilities, and change.

  44. Object-Oriented Design Patternshistorical

    Reusable design structures and the trade-offs behind creational, structural, and behavioral patterns.

  45. Singleton Patternhistorical

    A single shared instance, initialization safety, lifecycle, testability, and global-state trade-offs.

  46. Proxy Patternhistorical

    Interposing an object to control or augment access to another object while preserving its contract.

  47. Template Method Patternhistorical

    Fixing an algorithm skeleton while allowing selected steps to vary in subclasses or callbacks.

  48. Factory Method Patternhistorical

    Separating object creation decisions from clients that consume the created abstraction.

  49. State Patternhistorical

    Representing state-dependent behavior with explicit state objects instead of sprawling conditionals.

  50. Builder Patternhistorical

    Constructing complex objects step by step with readable optional configuration and validation.

  51. Strategy Patternhistorical

    Encapsulating interchangeable algorithms or policies behind a common contract.

  52. Observer Patternhistorical

    Notifying registered observers about subject changes and managing coupling, ordering, and lifecycle.

  53. Decorator Patternhistorical

    Adding composable behavior around an object without changing the wrapped implementation.

  54. Chain of Responsibilityhistorical

    Passing a request through an ordered pipeline of handlers that may process, enrich, reject, or forward it.

  55. Adapter Patternhistorical

    Translating one interface/protocol/data model into the contract expected by a client.