To teach fundamental DevOps concepts to regular developers and engineering practitioners.
To prepare participants for a DevOps engineering role.
What is DevOps?
A methodology that enhances product development through continuous integration of user feedback.
Departs from traditional software development approaches (e.g., factory-like development).
Emphasizes continuous updates and user feedback integration (e.g., Facebook vs. old games).
Key Stages of DevOps
Planning
Identify features to build and work on specifications.
Coding
Developers build features based on specifications.
Building
Source code is bundled into runnable artifacts (e.g., JavaScript for web).
Testing
Involves both automated (Continuous Integration) and manual (Quality Assurance) testing.
Releasing
Continuous deployment strategies for automatic release of confirmed changes.
Operating
Scaling, resource allocation, and performance monitoring (e.g., handling architectural problems).
Feedback
User feedback is integrated back into the planning phase for continuous improvement.
DevOps Engineering
Definition
Focuses on the technical aspects of DevOps.
Job postings often seek engineers for tasks like building, testing, deploying, and monitoring.
Three Pillars of DevOps Engineering
Pull Request Automation
Facilitates rapid feedback on code changes.
Supports atomic changes through pull requests reviewed for quality and compliance.
Deployment Automation
Ensures efficient and reliable code releases without user complaints.
Involves practices like canary deployments (testing features on a small user group).
Application Performance Management
Focuses on monitoring application health and performance.
Involves logging, metrics, and automatic alerts to detect issues.
Pull Request Automation
Developers propose changes via pull requests to facilitate collaboration and feedback.
Automation tools help to quickly identify issues (e.g., typo gates).
Code reviews are critical for ensuring quality and compliance with specifications.
Testing in DevOps
Test Driven Development (TDD)
Developers write tests before coding to clarify expectations and ensure features work as intended.
Continuous Integration (CI)
Developers continuously push small changes to a central repository, verified by automated tests.
CI is crucial for maintaining code quality and speeding up development cycles.
Deployment Strategies
Rolling Deployments
Gradually replaces old versions of applications with new ones, ensuring no downtime.
Effective for maintaining API compatibility and reverting changes if issues arise.
Blue-Green Deployments
Maintains two identical environments (blue and green) for seamless switching between old and new versions.
Allows testing and validation of the new version before directing traffic to it.
Canary Deployments
Gradual feature rollouts to a small percentage of users to gauge impact before full deployment.
Application Performance Management
Log Aggregation
Collects logs from various services for troubleshooting and performance monitoring.
Tools like ELK (Elasticsearch, Logstash, Kibana) facilitate effective log analysis.
Metrics Monitoring
Uses numerical data to assess application health and performance (e.g., CPU usage, request fulfillment times).
Tools like Prometheus and Grafana are commonly used for metrics collection and visualization.
Conclusion
Emphasizes the importance of DevOps engineering, automation, and performance management for successful software development in modern engineering environments.