What is DevOps?
DevOps is the combination of cultural philosophies, practices, and tools that
increases an organizationβs ability to deliver applications and services at high
velocity, evolving and improving products at a faster pace than organizations
using traditional software development and infrastructure management processes.
This speed enables organizations to better serve their customers and
compete more effectively in the market
DevOps CAMS
- Culture
people β process β tools
- Automation
Thousands of servers are impossible to manage but do you need thousand servers ? how much can you automate ? or should you automate ?
- Measurement
It's not just about infra measurement. business measure, client activity and other pointers. Recovery time, cycle time are obvious but it's important to measure and incentivise it.
- Sharing
share responsibility, share ownership and no escape goat. feedback loop is important
DevOps 3 ways
- flow thinking
- amplify feedback
- experiment and learn
Big Overview
- People over process over tools
- Continuous delivery
- lean management
- Infrastructure as code
IT Divide
- Developers wants to deliver features fast and deploy them quickly.
- Ops wants system to be stable and uptime is most important to them.
DevOps
- Blameless Postmortems
- transparent downtime
- Integrate team - devs and Ops
- Extension of agile
- IAAC - GIT for ops
DevOps Basic Terminologies
Provisioning -> Server is ready with OS, software and networking
Deployment -> adding or upgrading software on server
Orchestration -> coordinated operations on multiple systems
Configuration management -> managing server configuration via files such as ram, space, dependency softwares etc
Imperative (procedural) -> commands to produce desired state
Declarative (procedural) -> desired state is defined and tools will achieve it
idempotent -> repeat execution and same result
blue green deployment -> Identical deployment, used as switch
Continuous Integration -> Build and unit test at every checkin
Continuous Delivery -> deploy on production live environment at every checkin
Continuous Deployment -> After unit testing, deploy changes to production in small batches