Defining the Service
- Describe users in terms of roles and personas
- Write qualitative requirements with user stories
- Write quantitative requirements using key performance indicators (KPIs)
- Evaluate KPIs using SLOs and SLIs
- Determine the quality of application requirements using SMART criteria
Microservice Design and Architecture
- Decompose monolithic applications into microservices
- Recognize appropriate microservice boundaries
- Architect stateful and stateless services to optimize scalability and reliability
- Implement services using 12-factor best practices
- Build loosely-coupled services by implementing a well-designed REST architecture
- Design consistent, standard RESTful service APIs
DevOps Automation
- Automate service deployment using CI/CD pipelines
- Leverage Cloud Source Repositories for source and version control
- Automate builds with Google Cloud Build and build triggers
- Manage container images with Google Container Registry
- Create infrastructure with code using Deployment Manager and Terraform
Choosing Storage Solutions
- Choose the appropriate Google Cloud data storage service based use case, durability, availability, scalability and cost
- Storage binary data with Cloud Storage
- Store relational data using Cloud SQL and Spanner
- Store NoSQL data using Firestore and BigTable
- Cache data for fast access using Memorystore
- Build a data warehouse using BigQuery
Google Cloud and Hybrid Network Architecture
- Design VPC networks to optimize for cost, security and performance
- Configure global and regional load balancers to provide access to services
- Leverage Cloud CDN to provide lower latency and decrease network egress
- Evaluate network architecture using the Network Intelligence Center
- Connect networks using peering and VPNs
- Create hybrid networks between Google Cloud and on-premises data centers
Deploying Applications to Google Cloud
- Choose the appropriate Google Cloud deployment service for your applications
- Configure scalable, resilient infrastructure using Instance Templates and Groups
- Orchestrate microservice deployments using Kubernetes and GKE
- Leverage App Engine for a completely automated platform as a service (PaaS)
- Create serverless applications using Google Cloud Functions
Designing Reliable Systems
- Design services to meet requirements for availability, durability and scalability
- Implement fault tolerant systems by avoiding single points of failure, correlated failures and cascading failures
- Avoid overload failures the the circuit breaker and truncated exponential backoff design patterns
- Design resilient data storage with lazy deletion
- Analyze disaster scenarios and plan for disaster recovery using cost/risk
Security
- Design secure systems using best-practices like separation of concerns, principle of least privilege and regular audits
- Leverage Google Cloud Security Command Center to help identify vulnerabilities
- Simplify cloud governance using or organization policies and folders
- Secure people using IAM roles, Identity Aware Proxy and Identity Platform
- Manage the access and authorization of resources by machines and processes using service accounts
- Secure networks with with private IPs, firewalls and Google Cloud private access
- Mitigate DDoS attacks by leveraging Cloud DNS and Cloud Armor
Maintenance and Monitoring
- Manage new service versions using rolling updates, blue-green deployments
and canary releases
- Forecast, monitor and optimize service cost using the Google Cloud pricing
calculator, billing reports and by analyzing billing data
- Observe if your services are meeting their SLOs using Stackdriver Monitoring
and Dashboards
- Use Uptime Checks to determine service availability
- Respond to service outages using Stackdriver Alerts