Software Design and Architecture

Clean architecture, DDD, API design, patterns, and service boundaries.

Lessons

  1. Design Patterns in Java — Practical Catalog
  2. KISS, DRY & YAGNI
  3. API Design — Clear Contracts Clients Can Trust
  4. API Gateway — Edge Entry for Microservices
  5. Quality-Attribute Scenarios
  6. The Twelve-Factor App — Cloud-Native Baselines
  7. OOP Fundamentals — Encapsulation, Inheritance, Polymorphism
  8. Distributed Rate Limiting — Shared Quotas Across Many Pods
  9. Batch vs Stream Processing — When to Wait, When to Flow
  10. SOLID Principles — Maintainable Object Design
  11. Client–Server Architecture — Request Work From a Shared Machine
  12. Rate Limiter Design — Case Study
  13. REST vs. GraphQL — Fixed Resources vs. Client-Driven Queries
  14. Fan-out on Write vs Fan-out on Read
  15. Microservices Architecture — Independently Deployable Pieces
  16. REST vs. RPC — Wire Protocol and API Paradigm Trade-offs
  17. WebSockets — Full-Duplex Connections for Real-Time Apps
  18. Notification System Design — Reference Architecture
  19. What Is an API? — Contracts Between Programs
  20. Peer-to-Peer Architecture — Nodes as Equals
  21. Push vs Pull — Who Initiates Data Movement
  22. Scalability — Vertical, Horizontal, and Elastic Growth
  23. Serverless Architecture — Managed Compute on Demand
  24. Service Discovery — Finding Instances That Change
  25. Splitting a Monolith Safely (Strangler Fig)
  26. Stateful vs. Stateless Architecture — Managing Session State
  27. Sync vs Async Communication — Wait or Don’t Wait
  28. Vertical vs Horizontal Scaling — Bigger Machine or More Machines?

Back to library · Pillar paths

Shubham Jain · Learning Lab