What is DevOps
DevOps is a hybrid discipline combining the cross-functional domains of software development and operations into an exceptionally collaborative and productive environment of automation, flexible infrastructures, and maximally efficient workflows and processes.
The goal
Enhance the software delivery chain at every stage and meet the increasingly tight requirements in today’s competitive industry.
DevOps Departments
- Development: Developing and testing applications
- Operations: Deploying and maintaining applications on servers
Application Release Process
Have an idea ➡️ Define requirements ➡️ Code ➡️ Test ➡️ Build and Package
⬆️ ⬇️
Improvement ⬅️ Operate and Monitor ⬅️ Deploy ⬅️ Configure the Server
Common DevOps Challenges
- Miscommunication & Lack of Collaboration: Developers can’t deploy/run the app, or don’t consider deployment environments; operations may not know how the app works. Poor documentation can worsen this.
- Conflict of Interest: Developers want rapid changes; operations want stability.
- Security: Security teams must ensure new features don’t compromise the system (DevSecOps).
- Application Testing: Testing teams need to cover all levels and environments, but can’t rely solely on automation.
- Manual Work: Manual configuration and scripting slow down processes and introduce errors.
DevOps Solutions
DevOps engineers aim to remove roadblocks by automating and streamlining processes, step by step.
How DevOps Achieves This
DevOps combines cultural philosophies, practices, and tools to release software faster and with higher quality. The key is frequent collaboration between Dev and Ops teams.
DevOps Lifecycle
- Discover – Explore, organize, and prioritize ideas. Align to strategic goals and customer impact. Agile guides DevOps teams.
- Plan – Adopt agile practices for speed and quality. Break work into smaller pieces for incremental value.
- Code – Development, source code management, code review
- Build – Continuous Integration (CI) tools using version control (e.g., Git) for branching, merging, and workflows in the build process.
- Test – Software testing and performance measurement via CI.
- Package – Package management, artifact repository, deployment configuration
- Release – Change management, version release, automation, releases features frequently and steadily, improving velocity and sustainability.
- Configure – Infrastructure definition and management
- Operate – Manage end-to-end IT service delivery, including design, deployment, and maintenance.
- Monitor & Observe – Continuous monitoring, runtime performance, monitor uptime, speed, and functionality. Notify teams of changes or failures to maintain service.
- Continuous Delivery (CD) – Container orchestration, Infrastructure as Code (IAC), Cloud.
- Continuous Feedback – Evaluate releases and generate reports to improve future releases and incorporate customer feedback.
Infinity Loop
The DevOps lifecycle is often visualized as an infinity loop, symbolizing continuous collaboration and iterative improvement. The eight phases represent processes, capabilities, and tools for development (left side) and operations (right side). Teams collaborate throughout each phase to maintain alignment, velocity, and quality.
5 Key DevOps Principles
- Collaboration: Merge development and operations into a unified team
- Automation: Automate as much of the lifecycle as possible
- Continuous Improvement: Experiment, minimize waste, and optimize delivery
- Customer-Centric Action: Use feedback loops to develop user-focused products
- Create with the End in Mind: Understand customer needs and build holistic solutions
History of DevOps
Origins
- DevOps emerged between 2007–2008 as IT operations and software development communities sought to solve dysfunction in the industry.
- Traditional software development kept developers and operations separate, leading to siloed teams, long hours, botched releases, and unhappy customers.
- Thought leaders like Patrick Debois, Gene Kim, and John Willis helped drive the DevOps movement.