Building Robust Systems Without Heavyweight Dependencies
Introduction: The Framework Question
- What This Book Will Do
- Who This Book Is For
- A Note on Language Choices
- How to Read This Book
Chapter 1: The Case for Framework-Free Development
- What Framework-Free Actually Means
- The Cost of Abstraction Layers
- Control, Transparency, and Cognitive Load
- When Frameworks Earn Their Keep
Chapter 2: A Brief History of Software Abstraction
- From Assembly to Libraries to Frameworks
- The Spring Revolution and Its Aftermath
- The Rise of Microframeworks and Minimalist Languages
- Current Trends: Back to Basics
Chapter 3: Core Architectural Principles
- SOLID Principles Without the Buzzword Theater
- Clean Architecture in Practice
- Hexagonal Architecture and Port/Adapter Patterns
- The Dependency Rule and Inversion
Chapter 4: Modular Design and Separation of Concerns
- Defining Module Boundaries That Hold
- Information Hiding and Encapsulation
- Package Design Across Languages
- Feature Modules vs Layered Modules
Chapter 5: Dependency Management Without Frameworks
- Constructor Injection by Hand
- Service Locators and When to Avoid Them
- Factory Patterns for Flexible Composition
- Wiring Up a Real Application
Chapter 6: Configuration, Environment, and Bootstrapping
- The Twelve-Factor Approach to Configuration
- Environment Variables, Files, and Hierarchies
- Secrets Management Without Ceremony
- Bootstrapping: From Zero to Ready
Chapter 7: API Design and Communication Patterns
- RESTful APIs Built From Scratch
- HTTP Semantics Done Right
- Protocol Buffers and gRPC Without Magic
- Event-Driven Communication Patterns
Chapter 8: Error Handling, Logging, and Observability
- Error Types, Propagation, and Recovery
- Structured Logging as a First-Class Concern
- Metrics, Tracing, and Distributed Observability
- Health Checks and Readiness Probes
Chapter 9: Persistence and Data Access Without ORMs
- Why ORMs Often Fail You
- Writing SQL That Scales
- The Repository Pattern Implemented
- Migrations, Connection Pooling, and Transactions
Chapter 10: Concurrency, Async Programming, and Performance
- Concurrency Models Across Languages
- Async/Await Without Framework Magic
- Locks, Channels, and Lock-Free Patterns
- Profiling and Performance Tuning
Chapter 11: Security in Minimalist Architectures
- Authentication Without Framework Helpers
- Authorization Models From Scratch
- Encryption, Hashing, and Key Management
- Input Validation and Attack Surface Reduction
Chapter 12: Testing Strategies for Framework-Free Systems
- Why Framework-Free Code Tests Better
- Unit Testing With Hand-Wired Dependencies
- Integration Tests That Are Fast and Reliable
- Property-Based Testing and Fuzzing
Chapter 13: Build, Deploy, and Operate
- Build Tools and Dependency Resolution
- Container Images That Are Small and Safe
- Deployment Strategies and Rollbacks
- Scaling Patterns and Operational Runbooks
Chapter 14: Case Studies: Real-World Framework-Free Systems
- A High-Throughput Go API Service
- A Rust CLI Tool at Scale
- A Minimalist Node.js Microservice
- Lessons From Systems That Refused the Framework
Chapter 15: Conclusion: Choosing Your Path
- The Decision Matrix: Framework vs Framework-Free
- Hybrid Approaches That Actually Work
- Signs Your Framework Has Become a Prison
- Final Thoughts on Engineering Judgment