You are previewing Design – Build – Run: Applied Practices and Principles for Production-Ready Software Development.
O'Reilly logo
Design – Build – Run: Applied Practices and Principles for Production-Ready Software Development

Book Description

This unique and critical book shares no-fail secrets for building software and offers tried-and-true practices and principles for software design, development, and testing for mission-critical systems that must not fail. A veteran software architect walks you through the lifecycle of a project as well as each area of production readiness—functionality, availability, performance and scalability, operability, maintainability, and extensibility, and highlights their key concepts.

Table of Contents

  1. Copyright
  2. Dedication
  3. About the Author
  4. Credits
  5. Acknowledgments
  6. Introduction
  7. Production-Ready Software
    1. "Production" Readiness
      1. What Is Production Readiness?
      2. Why Is Production Readiness Important?
      3. The Production-Readiness "Process"
      4. Summary
    2. The Quality Landscape
      1. The Quality Characteristics
      2. Why Quality (and Scope) Matter
      3. Quality Comes at a Price
      4. Summary
    3. Preparing for "Production"
      1. Preparation Is Paramount
      2. Development Mobilization
      3. Build, Release, and Regular Integration Mobilization
      4. Test Mobilization
      5. Defect Management (and Fix) Mobilization
      6. Configuration Management Mobilization
      7. Change Control Mobilization
      8. Summary
    4. The Ins and Outs of Construction
      1. Thinking Out-of-the-Box
      2. Considering the Design
      3. The Analysis and Design Outputs
      4. Summary
  8. The Production Landscape
    1. The Production Environment
      1. The Big Picture
      2. The Hardware Topology
      3. The Software Topology
      4. The Primary and Secondary Data Centers
      5. Summary
    2. Activities and Environments
      1. The Types of Testing
      2. Testing in the "Production" Environments
      3. Summary
    3. Service Delivery and Operations
      1. The Three Levels of Live Service Support
      2. The Operations Manual
      3. Summary
    4. Monitoring and Alerts
      1. What Is Monitoring?
      2. What Is Monitored?
      3. What Are Alerts?
      4. Summary
    5. Reporting and Analytics
      1. Reporting Overview
      2. The Reporting Architecture
      3. Technical Reporting
      4. Analytics Overview
      5. Summary
    6. Batch
      1. Batch Processing
      2. The Batch Scheduler
      3. The Batch Run Date
      4. Summary
    7. Incident Investigation
      1. The Investigation Roadmap
      2. Typical Incidents
      3. Summary
    8. Application Maintenance
      1. The Application Maintenance Team
      2. Application Maintenance Functions
      3. The Developer's Guide
      4. Summary
  9. Case Study
    1. Conceptual Design
      1. The Guiding Principles
      2. Online Application Walkthrough
      3. Defining the Requirements
      4. Documenting the Use Cases
      5. Summary
    2. Planning the Architecture
      1. The Conceptual Architecture
      2. The Presentation Tier
      3. The Web Service Façade
      4. The Business Processing Components
      5. The Logical Data Model and Data Access
      6. The Reporting Components
      7. Logical Component Model
      8. Summary
    3. Modeling the Application
      1. Component Responsibility Modeling
      2. Modeling the Batch Jobs
      3. The Reporting Components
      4. Summary
  10. Patterns and Practices
    1. Designing for Batch
      1. The Batch Architecture
      2. An Execution and Control Framework
      3. Multiple Threads and Multiple Jobs
      4. Generic Jobs and Generic Functionality
      5. Summary
    2. Designing for Reporting
      1. Maintaining Meaningful Data
      2. Providing an Audit Trail
      3. Summary
    3. Designing for Performance
      1. Tuning the Database Layer
      2. Tuning the "Application" Layer
      3. Summary
    4. Designing for Resilience
      1. Human Error and User Behavior
      2. Handling System Failure
      3. Non-Stop Processing
      4. Summary
    5. Designing for Monitoring
      1. Performance Counters
      2. Events and Event Logs
      3. Monitoring Configuration
      4. Summary
    6. Designing for Incident Investigation
      1. Tracing
      2. Investigative Tooling
      3. Summary
    7. Designing for Application Maintenance
      1. Preparing the Solution
      2. Defining the Standards
      3. Supporting Configurability
      4. Summary
    8. Designing for Testing
      1. Developer Testing Activities
      2. Examining the Factory Pattern
      3. Using Stubs and Simulators
      4. Summary
    9. Designing for Deployment
      1. Splitting Out Test Materials
      2. Separating the Components
      3. Classifying the Releases
      4. Summary
  11. Conclusion
    1. Review and Wrap-Up
      1. Back to the Real World
      2. Onwards and Upwards
  12. Index