(B)usiness - External Forces; Software development and value stream
(O)rganizational - Internal Forces; Teams deciding it wants to structure itsself using DevOps and maybe more specifically SRE
(P)rocess/Techniques - Human Considerations; Helps everyone on team to work together
(T)echnology/Tools - Nuts and Bolts; Specific tools to implement CI/CD
Google's certifications are tied to a job class analysis.
- 2hr exam
PCDE are responsible for efficient development operations that can balance service reliability and delivery speed. They are sklled at using GPC to build software delivery pipelines, deploy and monitor services, and manage and learn from incidents.
* A 50%-good solution that people actually have solves more problems and survives longer than a 99% solution that nobody has... Shipping is a feature. A really important feature. Your product must have it! (Joel Spolsky - Co-founder of stack overflow)
\> Codebase > BUILD > Build (n.) inc Unit tests > DELIVER > Deployable Build > DEPLOY > Running System
DevOps is all about structuring the business to say that, developers should be just as responsible for stuff that goes wrong in production as operations people are. Software development is a team sport.
DevOps is a structure that naturally leads to smaller and smaller change. Devs figure out ways (better automated testing etc) to shrink the impact of each thing they do making code changes smaller and smaller, so the potential negative impact is also smaller.
- Open source tooling (e.g. Jenkins, Spinnaker, Gitlab, Concourse)
- Auditing and tracing of deployments (e.g. CSR, Cloud Build, Cloud Audit Logs)
Config
2.3 Manage configuration and secrects
- Secure storage methods
- Secret rotation and config changes
IAC
2.4 Manage IAC
- Terraform / Cloud Deployment Manager
- Infrastructure code versioning
- Make infrastructure changes safer
- Immutable architecture (Creating new resources to replace old ones - Big fan)
Tooling
2.5 Deploy CI/CD Tooling
- Centralised tools vs. multiple tools (single vs multi-tenant)
- Security of CI/CD tooling
Environments
2.6. Manage different development environments (e.g. staging, production, etc)
- Decide on the number of environments and their purpose
- Create envs dynamically per feature branch with GKE (namespaces), Cloud Deployment manager
- Local development environments with Docker, Cloud code, Skaffold
Pipeline Security
2.7. Secure the deployment pipeline
- Vulnerability scanning/analysis with Container registry
- Binary authorisation (cluster only allows approves binaries to be deployed to it)
- IAM policies per environment (least priviledge)
### Exam Guide Walkthrough - Ops
Monitoring & Logging
3. Implementing service monitoring strategies
3.1 Manage application logs - fluentd etc
3.2 Manage application metrics with Stackdriver (deprecated - now Cloud Driver) Monitoring
3.3 Manage Stackdriver Monitoring Platform - Alerting, SLI's SLO's, integrations with grafana, setup with Terraform, send to other tools e.g. datadog, splunk
3.4 Mange Stackdriver Logging platform - Turning logging into metrics
3.5 Implementing logging and monitoring access controls - IAM/Security
4. Optimizing service performance
4.1 Identify service performance issues
4.2 Debug application code
4.3 Optimize resource utilisation
5. Manage Service Incidents
5.1 Coordinate roles & implement communication channels during a service incident
5.2 Investigate incident symptoms impacting users with Stackdriver IRM