-
Implications of DevOps
- Quality of deployed change is important
- Reliability and repeatability of delivery mechanism should be high
-
Two key time points in development
- Developer commits a change
- Change is deployed to production
-
Most sensitive time in software development
Software release
-
Why is software release sensitive?
- System incompatibilities
- System failures
-
Four considerations in release planning
- 1. Define and agree on release and deployment plans with customers/stakeholders
- 2. Ensure compatibility of assets and service components in release packages
- 3. Ensure integrity of release packages in configuration management system
- 4. Ensure all release and deployment packages are tracked, installed, tested, verified and uninstalled/rolled back if needed.
-
Why does devops matter
Bad deployment is expensive
-
Operations staff tasks
- - Analyze logs to identify issues
- - Routine audits of systems and software- Perform backups
- - Apply OS patches, updates and config changes
- - Install new hardware and software
- - Manage user accounts
- - Answer technical queries and assist users
- - Ensure system integrity
- - Document system configuration
- - Troubleshoot problems
- - Optimize system performance
- - Ensure network stability
- - Manage filesystems
-
Seven stages in devops
- 1. Continuous Development
- 2. Continuous Integration
- 3. Continuous Testing
- 4. Monitoring
- 5. Feedback
- 6. Deployment
- 7. Operation
-
What is continuous development
Use of an iterative software development process
-
Essential tools in continuous development
- Version control
- Build systems
-
What is continuous integration?
Automation building the system
-
Example software used for continuous testing
J unit, gtest, Selenium, TestNG
-
Where in the devops cycle is Docker most often used?
Continuous testing
-
Benefits of continuous deployment
- Removes need for scheduled releases
- Accelerates bug resolution
- Accelerates feedback from users
-
Requirement for continuous deployment
Automated testing environment
-
How does blue/green deployment work?
- - Two environments, one is deployed while the other is being developed
- - When it's time to update, swap them around
- - Update the old deployment environment and develop it further
-
How does canary releasing work?
- - A small number of users (maybe 10%) will be given the update
- - The update will be closely monitored
- - If the "canary dies" the update will be rolled back
- - Otherwise, the update will be rolled out to everyone
-
How does A/B testing work?
- - Different deployments/versions are released to different groups
- - Metrics are used to determine which gives best outcome
-
What things might be monitored?
- Patterns of use
- Resource failures
- Security
- Performance
-
Resource failure examples
- Unreachable server
- Low memory
-
Why monitor patterns of use?
- Capacity planning
- Determine if/where more development effort is needed
-
Most important thing to monitor
Customer satisfaction
-
Things that are (generally) important to customers
- Features
- Availability
- Response time
-
Most important concern for the business
Cost efficiency
-
Aspects of cost efficiency
- Utillization
- Optimization
- Automation
-
Uses of continuous feedback
- Guiding current release improvements
- Guiding future release plans
-
What does continuous operation ensure?
- Shorter development cycles
- Faster integration of user feedback
- Accelerated time to market
-
List the 8 Netflix DevOps stages
- Code check-in
- Continuous integration
- Bake
- Deployment
- Post-deploy test
- Hotfix
- Canary
- Live
-
What is baking (Netflix)
Creating the containers/images
-
Why are software containers useful/needed?
- Because software does not run in an isolated environment
- Allows isolation of running environment from host environment
-
Key jobs of containers
- Keep applications' execution environments isolated
- Share underlying OS kernel
- Allow combinations of software components
-
Key benefits of containers
- Application isolation
- Disposable
- Cost-effective scaling
- Benefits of VMs
-
Container abstraction layer provides... (4)
- Lighter weight than a full VM
- Better resource usage
- Better application development
- Improved developer productivity
-
What does Docker do?
Creates, deploys and runs containers (and their applications)
-
Developer steps (using Docker)
- 1. Write and share code using containers
- 2. Push application to test environment
- 3. Fix bugs and redeploy
- 4. Push image to production
-
Three components of docker architecture
- Docker client (local)
- Docker host (local)
- Registry (remote)
-
What does the docker host do?
- Listen for API requests
- Manages images and containers
-
What is a docker image?
Read-only instructions for creating a docker container
-
What is a docker container?
Runnable instance of an image
-
Common container orchestrators
- Kubernetes (K8s)
- Ansible
- Puppet
- Salt
- AWS CloudFormation
|
|