
Premium
Title Page
1/7/2025
Copyright Page
1/7/2025
Dedication Page
1/7/2025
About the Author
1/7/2025
About the Reviewers
1/7/2025
Acknowledgement
1/7/2025
Preface
1/7/2025
Table of Contents
1/7/2025
Section 1: Cloud Services by Responsibility
1/7/2025
1. Responsibilities and Utility of a Cloud Platform
1/7/2025
Introduction
1/7/2025
Structure
1/7/2025
Objectives
1/7/2025
General infrastructure considerations
1/7/2025
Identity and authentication
1/7/2025
Scalability
1/7/2025
Asynchronous processing
1/7/2025
Data permanence
1/7/2025
Response delivery
1/7/2025
Analysis of infrastructure considerations
1/7/2025
Interdependence of platform responsibilities
1/7/2025
Assigning roles by platform
1/7/2025
Google Cloud Platform product overview
1/7/2025
Top level categories of Google Cloud services
1/7/2025
Computing power
1/7/2025
Databases
1/7/2025
Storage
1/7/2025
Networking
1/7/2025
Data analytics
1/7/2025
Security and identity
1/7/2025
Developer tools
1/7/2025
Artificial intelligence and machine learning
1/7/2025
Components outside of cloud services
1/7/2025
Conclusion
1/7/2025
2. Dividing up Features of a Cloud Backed Application
1/7/2025
Enumerating responsibilities and dependencies
1/7/2025
Different, valid points of view
1/7/2025
Grouping by topological locality
1/7/2025
Grouping by feature affinity
1/7/2025
Determining feature affinity and proximity
1/7/2025
Grouping by feature performance considerations
1/7/2025
Understanding feature requirements
1/7/2025
Defining application feature composition
1/7/2025
Pertinent qualities of an infrastructure service or component
1/7/2025
Describing infrastructure options
1/7/2025
3. Determining the Infrastructure to Build Features Upon
1/7/2025
Request funneling to scale to O(N)!
1/7/2025
Urgency versus importance
1/7/2025
Eventual consistency in distributed systems
1/7/2025
A case study in eventual consistency
1/7/2025
Guaranteeing user-visible responsiveness
1/7/2025
Horizontal scaling via Pub/Sub
1/7/2025
Transaction guarantees
1/7/2025
Beyond the base transaction model
1/7/2025
Security, privacy and permanence
1/7/2025
Cybersecurity
1/7/2025
Security in Google Cloud Platform
1/7/2025
Data privacy
1/7/2025
4. Choosing Between GCP Options
1/7/2025
Choosing a server-side runtime platform
1/7/2025
The impact of compute platform selection
1/7/2025
Google Application Engine
1/7/2025
Google Cloud Run
1/7/2025
Compute Engine
1/7/2025
Virtual machines
1/7/2025
Compute product comparison
1/7/2025
GCP Compute resource management
1/7/2025
Compute resources offered
1/7/2025
Determining where best to store your data
1/7/2025
Cloud Firestore
1/7/2025
Cloud Structured Query Language
1/7/2025
Bigtable
1/7/2025
Bigtable performance
1/7/2025
Spanner
1/7/2025
Cloud Storage
1/7/2025
Firebase Authentication
1/7/2025
Firebase authentication features
1/7/2025
Google Cloud IAM
1/7/2025
Roles versus users
1/7/2025
Identity Platform
1/7/2025
Identify Platform authentication features
1/7/2025
Asynchronous message handling
1/7/2025
Pub/Sub
1/7/2025
Scalability of a messaging architecture
1/7/2025
Cloud Tasks
1/7/2025
Section 2: Cloud Backed Application Architecture
1/7/2025
5. Client-side Technology Choices
1/7/2025
Native mobile applications
1/7/2025
Android development tools
1/7/2025
iOS development tools
1/7/2025
Cross-platform mobile frameworks
1/7/2025
Flutter
1/7/2025
React Native
1/7/2025
Kotlin Multiplatform
1/7/2025
Web applications
1/7/2025
Desktop client applications
1/7/2025
Native desktop development
1/7/2025
Cross-platform desktop development
1/7/2025
In-browser client applications
1/7/2025
Web application programming languages
1/7/2025
Angular
1/7/2025
React and ReactDOM
1/7/2025
Web application development tools
1/7/2025
GCP support for web application clients
1/7/2025
Chatbots and voice agents
1/7/2025
Chatbots and GCP
1/7/2025
Chatbot voice frontends
1/7/2025
6. Cloud Services at the Backend Border
1/7/2025
Maintaining backend agnostic clients
1/7/2025
General API design principles
1/7/2025
Special considerations for client or cloud interfaces
1/7/2025
Visibility levels to the client
1/7/2025
Planning migration to substitute or equivalent cloud services
1/7/2025
Vendor lock-in
1/7/2025
Product obsolescence
1/7/2025
Designing for migration
1/7/2025
Visibility between cloud services
1/7/2025
Dependencies between cloud service products
1/7/2025
Isolating cloud service products
1/7/2025
Identifying and packaging tightly coupled services
1/7/2025
7. Frontends at the Client Border
1/7/2025
Client-side logic
1/7/2025
Avoid multiple sources of truth
1/7/2025
Presentation of the user interface
1/7/2025
Capturing user input, selection and entry
1/7/2025
Hiding sensitive logic from observation
1/7/2025
Making frequently changed code easy to deploy
1/7/2025
Defining client requests to the backend
1/7/2025
Backends for frontends
1/7/2025
Blocking and non-blocking request responses
1/7/2025
Identifying asynchronous methods
1/7/2025
Client technologies for asynchronous processing
1/7/2025
Pushback and handling unexpected responses
1/7/2025
Defining and handling non-user-initiated actions
1/7/2025
Use cases for server-initiated actions
1/7/2025
Mechanisms for receiving server-generated traffic
1/7/2025
Section 3: End-to-End: A Global Voting System
1/7/2025
8. Making a Voting System Available and Reliable
1/7/2025
Digital voting system overview
1/7/2025
Overview of an online talent competition
1/7/2025
Voting process
1/7/2025
Scalability requirements
1/7/2025
Voting system performance requirements
1/7/2025
Usage models
1/7/2025
Google Cloud Platform regional boundaries
1/7/2025
Voting system demand by continent
1/7/2025
Data aggregation
1/7/2025
Aggregating distributed votes in a global system
1/7/2025
Accessibility
1/7/2025
Strategically relocating resources
1/7/2025
Optimizing the application to fit available resources
1/7/2025
Redesigning the application
1/7/2025
Creating the package and directory structure codelab
1/7/2025
Platform components and initial files
1/7/2025
Voting API
1/7/2025
9. Identifying the Stress Points of our Voting System
1/7/2025
Types of failures
1/7/2025
Scope of a failure
1/7/2025
Progression
1/7/2025
Causes of a failure
1/7/2025
Failure categorization
1/7/2025
Assessing impact
1/7/2025
Determining short-term cost of an outage
1/7/2025
The long-term cost of an outage
1/7/2025
Monitoring, detection and notification
1/7/2025
Observing first and then controlling
1/7/2025
Monitoring terminology
1/7/2025
Types of metrics
1/7/2025
Key reliability metrics
1/7/2025
Monitoring distributed systems
1/7/2025
Monitoring GCP applications
1/7/2025
Performance watchpoints in the voting application
1/7/2025
Incident response
1/7/2025
Matrix of failure modes and appropriate measures
1/7/2025
Implementation of the Vote Ingester API codelab
1/7/2025
Project considerations in setting up the repository
1/7/2025
Web client and common code
1/7/2025
Cloud-based code
1/7/2025
Google Cloud project configuration
1/7/2025
Firebase project configuration
1/7/2025
GCP Monitoring
1/7/2025
10. Securing All User Votes
1/7/2025
Demand modeling
1/7/2025
Independent cycles of demand
1/7/2025
Load balancing
1/7/2025
Types of load balancers
1/7/2025
Load balancing algorithms and considerations
1/7/2025
Load balancing in Google Cloud Platform
1/7/2025
Selecting voting system load balancers
1/7/2025
Employing message queues to pool requests
1/7/2025
Creating Pub/Sub resources for votes
1/7/2025
Publishing votes to Pub/Sub
1/7/2025
Asynchronous processing of requests
1/7/2025
Processing votes published to Pub/Sub
1/7/2025
Scaling backend processing
1/7/2025
Applying GCP scaling
1/7/2025
Vote Processor deployment
1/7/2025
Monitoring of backend performance
1/7/2025
Dispatching user requests asynchronously via Pub/Sub codelab
1/7/2025
Asynchronous vote processing components
1/7/2025