What is DevOps?
DevOps is an organizational and cultural movement that aims to increase the speed of development, improve service reliability, and create a sense of shared responsibility among software stakeholders.
What are the key tools for DevOps?
DevOps is about culture and not the tools, but a few key areas exist where tooling enhances the process.
- Version control
- Continuous Integration
- Test automation
- Configuration management and deployment
- Monitoring
- Containerization
What is a DevOps engineer?
A DevOps engineer is someone who understands the full software development lifecycle (SDLC) of a product/business and collaborates across organizational boundaries to ensure smooth code releases.
Why did DevOps become a popular methodology?
DevOps became popular because it is a key contributor to several business critical goals:
- Frequent feature releases
- Reduce time to identify and fix bugs
- Reduce the rate of failed releases
- Faster failure recovery and uptime
What is configuration management?
Configuration management is the practice of automating the provisioning of a system with a desired state and ensuring that it does not lose its integrity over time.
It involves the following key concepts:
- Configuration identification: Defines and documents a product configuration
- Change management: Controls changes to a product configuration
- Configuration status accounting: Provides status about a product configuration
- Configuration audits: Verifies the consistency of the configuration of a product
Why is configuration management important for DevOps?
Configuration management helps the team automate time-consuming tasks and provides repeatability on the provisioning of environments. It also brings consistency to products and environments.
What does CAMS mean in DevOps?
CMAS stands for Culture, Automation, Measurement, and Sharing and it represents the core principles of DevOps
- Culture is fundamental for DevOps, coordination and collaboration between people involved in the product is the main goal
- DevOps should always aim to fully automate all processes
- To improve one needs to be able to measure. Measurable metrics are golden signals.
- All teams and stakeholders need to know the end goal. Shared input means shared responsibility and shared ownership. People are willing to collaborate if their thoughts are heard and this feeds back to the first principle of Culture.
What is Continuous Integration (CI)?
Continuous Integration is the practice of ensuring developers integrate their changes into a common repository. Each integration is then verified by an automated build process that aims at identifying problems at an early change.
A common process is:
- A developer checks out the code locally
- A developer implements a feature
- A developer commits the code
- CI server detects the code and automatically triggers a build with the change
- CI server runs automated tests against the built code
- The team is informed of the results. If it fails the process can be repeated
What is the benefit of using Continuous Integration?
Continuous Integration has proved that improves software quality and reduces the time taken to identify bugs enabling developers to deliver more features in less time.
What is Continuous Testing?
Continuous Testing is the process of running automated tests as part of a software development process to obtain immediate feedback on the quality of changes.
What are examples of KPI for DevOps?
- Reduce time taken to recover from failures
- Increase deployment frequency
- Reduced rate of failed deployments
What does orchestration mean in DevOps?
Orchestration is the process of integrating and synchronizing multiple services to achieve a single goal.
What is a Minimum Viable Product (MVP)?
An MVP is the minimum that can be done in order to experiment and test the value hypothesis and learn.