System Design on AWS

Book description

Enterprises building complex and large-scale applications in the cloud face multiple challenges. From figuring out the right tools to estimating the right provisioning, nearly every solution comes with a complicated set of choices and trade-offs. AWS provides a one-stop shop for building and scaling these applications, and this practical guide helps you decide which pieces to use and how to fit them together.

Authors Jayanth Kumar and Mandeep Singh equip software architects and engineers with essential AWS and system design knowledge to help you make good decisions and overcome the challenges of designing and scaling enterprise software architecture. By diving into specific use cases, you'll understand how these principles and resources can be applied to real-world problems.

With this book, you will:

  • Learn the basics and best practices of successful system design
  • Understand key AWS services and their strengths and limitations for building large-scale systems
  • Examine engineering patterns and principles that best support large-scale systems, and learn how to design architecture with scalability, operations, and resilience in mind
  • Learn what highly performant and cost-optimized architectures look like on AWS and the tools and frameworks that are best for specific use cases

    Publisher resources

    View/Submit Errata

    Table of contents

    1. Brief Table of Contents (Not Yet Final)
    2. I. System Design Basics
    3. 1. System Design Trade-offs and Guidelines
      1. System Design Concepts
        1. Communication
        2. Consistency
        3. Availability
        4. Reliability
        5. Scalability
        6. Maintainability
        7. Fault Tolerance
      2. Fallacies of Distributed Computing
      3. System Design Trade-offs
        1. Time vs Space 
        2. Latency vs Throughput 
        3. Performance vs Scalability 
        4. Consistency vs Availability 
      4. System Design Guidelines
        1. Guideline of Isolation: Build It Modularly
        2. Guideline of Simplicity: Keep it Simple, Silly
        3. Guideline of Performance: Metrics Don’t Lie
        4. Guideline of Tradeoffs: There Is No Such Thing As A Free Lunch
        5. Guideline of Use Cases: It Always Depends 
      5. Conclusion
    4. 2. Storage Types and Relation Stores
      1. Data Storage Format
        1. File Storage
        2. Block Storage
        3. Object Storage
      2. Relational Databases 
        1. Relational Database Concepts
        2. Relational Database Management System Architecture
        3. Optimizing Relational Databases
        4. Scaling Relational Databases
        5. Open-source Relational Database Systems
      3. Conclusion
    5. 3. Non-relational Stores
      1. Non-relational Database Concepts
      2. Key Value Databases
        1. Data Model
        2. Data Access and Retrieval Operations
        3. Scaling Key Value Stores
        4. Availability in Key-Value Stores
        5. Advantages, Trade-offs and Considerations
        6. Open Source Key Value Databases
      3. Document Databases
        1. Data Model
        2. Availability in Document Stores
        3. Advantages, Trade-offs and Considerations
        4. Open-source Document Databases
      4. Columnar Databases
        1. Data Model
        2. Consistency Levels
        3. Columnar Store Architecture
        4. Advantages, Trade-offs and Considerations
        5. Open Source Columnar Databases
      5. Graph Databases
        1. Data Model
        2. Data Access and Retrieval
        3. Advantages, Trade-offs and Considerations
        4. Open-source Graph Databases
      6. Conclusion
    6. 4. Caching Policies and Strategies
      1. Caching Benefits
      2. Cache Eviction Policies
        1. Belady’s Algorithm
        2. Allowlist Policy
      3. Cache Invalidation
      4. Caching Strategies
      5. Caching Deployment
      6. Caching Mechanisms
      7. Content Delivery Networks
      8. Open Source Caching Solutions
        1. Memcached
        2. Redis
      9. Conclusion
    7. 5. Load Balancing Approaches and Techniques
      1. Networking Components
      2. Load Balancing Benefits
      3. Load Balancer Deployment and Placement Strategies
        1. Global Server Load Balancing
        2. Local Load Balancing
        3. Between Clients and Web Servers
        4. Between Web and Application Servers
        5. Between Application and Database Servers
      4. Load Balancing Algorithms
        1. Static Load Balancing Algorithms
        2. Dynamic Load Balancing Algorithms
      5. Sessions Persistence in Load Balancers
        1. Stateful Load Balancers
        2. Stateless Load Balancers
      6. Load Balancer Types
        1. Load Balancer Types Based on Functionality
        2. Load Balancer Types Based on Configuration
      7. Open Source Load Balancer - Nginx
        1. Layer 4 and Layer 7 Load Balancing
        2. Various Load Balancing Algorithms
        3. Health Checking and Failure Detection
        4. Dynamic Configuration Updates
        5. Reverse Proxy Load Balancing
        6. HTTP Load Balancing
        7. TCP and UDP Load Balancing
        8. Session Persistence
      8. Conclusion
    8. 6. Communication Networks and Protocols
      1. Communication Models and Protocols
        1. OSI Model
        2. TCP/IP Model
      2. Communication Types
        1. Pull Mechanism: HTTP Polling
        2. Push Mechanism: WebSockets
        3. Push Mechanism: Server Sent Events
      3. Common Communication Protocol Standards
        1. Remote Procedure Call
        2. GraphQL
        3. Web Real-Time Communication
      4. Conclusion
    9. II. Diving Deep into AWS Services
    10. 7. AWS Network Services
      1. Getting Started With AWS
        1. AWS Regions
        2. AWS Availability Zones
        3. AWS Local Zones
        4. AWS Edge Locations
      2. Introduction to AWS Networking Services
        1. Amazon VPC
        2. Considerations for Amazon VPC Creation
        3. Subnets
      3. Internet Connectivity
        1. Route Tables
        2. Security Groups 
        3. Network Access Control Lists
        4. Amazon VPC To Internet Connectivity
        5. Amazon VPC to Amazon VPC Connectivity
        6. Hybrid Connectivity
      4. Amazon Route 53
      5. Amazon Elastic Load Balancer
      6. Amazon API Gateway
      7. Amazon CloudFront
      8. Conclusion
    11. 8. AWS Storage Services
      1. Cloud Storage on AWS
        1. Amazon Elastic Block Storage
        2. Amazon Elastic File Storage
        3. Amazon Simple Storage Service
      2. AWS Databases
        1. Amazon RDS
        2. Amazon DynamoDB
        3. Amazon DocumentDB
        4. Amazon Neptune
        5. Amazon ElasticCache
        6. Amazon Opensearch
        7. Amazon Timestream 
        8. Amazon Keyspaces
      3. Conclusion
    12. 9. AWS Compute Services
      1. Amazon Elastic Compute Cloud
        1. Amazon Machine Image
        2. Instance Type
        3. Auto Scaling
      2. AWS Lambda
      3. Containerization Services
        1. Amazon Elastic Container Service
        2. Amazon Elastic Kubernetes Service
      4. Conclusion
    13. 10. AWS Orchestration Services
      1. Amazon Managed Streaming for Apache Kafka
      2. Amazon Simple Queue Service
      3. Amazon Simple Notification Service
      4. Workflow Orchestration
        1. AWS Step Functions
        2. Amazon Managed Workflow for Apache Airflow
      5. Amazon CloudWatch
        1. Application Logs
        2. Metrics and Alarms
      6. AWS Identity and Access Management
      7. Amazon Cognito
      8. AWS AppSync
      9. Conclusion
    14. 11. Big Data, Analytics and Machine Learning Services
      1. AWS Big Data and Analytics
        1. Amazon Elastic MapReduce
        2. AWS Glue
        3. Amazon Athena
        4. Amazon Kinesis
        5. Amazon QuickSight
        6. Amazon Redshift
      2. Machine Learning on AWS
        1. Amazon SageMaker
        2. AWS ML Application Services
        3. AWS ML Infrastructure
      3. Conclusion
    15. III. System Design Use Cases
    16. 12. Designing a URL Shortener Service
      1. System Requirements
        1. Functional and Non-Functional Requirements
        2. System Scale
        3. Storage Space
      2. Starting with the Design
        1. URL Shortening Algorithm
        2. Key Generation Service
        3. APIs
        4. System Considerations
        5. Custom Domain Support
      3. Launching the System on AWS
        1. Day Zero Architecture
        2. Scaling to Millions and Beyond
        3. Day N Architecture
      4. Conclusion
    17. 13. Designing a Web Crawler and Search Engine
      1. System Requirements
        1. Functional and Non-Functional Requirements
        2. System Scale
      2. Starting with the Design
        1. Designing Web Crawler
        2. Designing Search Engine
      3. Launching the System on AWS
        1. Day Zero Architecture
        2. Scaling to Millions and Beyond
        3. Day N Architecture
      4. Conclusion
    18. About the Authors

    Product information

    • Title: System Design on AWS
    • Author(s): Jayanth Kumar, Mandeep Singh
    • Release date: December 2024
    • Publisher(s): O'Reilly Media, Inc.
    • ISBN: 9781098146894