DevOps

DevOps cycle, CI/CD pipeline, DevOps culture, Continuous integration, Continuous delivery and deployment, DevSecOps, Infrastructure as Code

DevOps is the combination of cultural philosophies, practices and tools that increases an organization’s ability to deliver applications and services at high speed, evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes and enables organizations to better serve their customers and compete more effectively in the market.

The combination of Development (Dev) and Operations (Ops) is a way of working where development, IT operations, and even security teams partner together to build, test and provide regular feedback throughout the entire software development lifecycle (SDLC). DevOps is replacing the siloed Development and Operations departments with multidisciplinary teams that work together sharing specific tools and practices. They use practices to automate processes that historically have been manual and slow and a technology stack and tooling which help them operate and evolve applications quickly. Engineers independently accomplish tasks that normally would have required help from other teams, thus further increasing the team’s velocity.

DevOps culture

DevOps culture is a set of practices that reduce the barriers between developers, who want to innovate and deliver faster, on the one side and, on the other side, operations, who want to guarantee the stability of production systems and the quality of the system changes they make.

The culture and mindset change is removing barriers between two traditionally siloed teams (Development and Operations) enabling the two teams to work together to optimize both the productivity of developers and the reliability of operations. Teams strive to communicate frequently, increase effectiveness and improve the quality of services they provide to customers. They take full ownership for their services by thinking about the end customer’s needs, how they can contribute to solving those needs and view the entire development and infrastructure lifecycle as part of their responsibilities.

DevOps cycle

  • Planning – scope out new features and functionality, draw from prioritized end-user feedback, case studies and inputs from internal stakeholders
  • Development – test, code and build new and enhanced features based on user stories and work items in the backlog,
  • Integration/build – integrate new code, test and package into an executable, merge code into a master copy, automate the compile, unit test and packaging into an executable
  • Deployment – deploy the integration runtime build output to a runtime environment, test and remediate potential errors before they reach the end user environment
  • Operations – monitor the performance, behavior and availability of the new features, ensure that there are no service interruptions, report incidents and ensure that fixes are applied
  • Learning/continuous feedback – gather feedback from end users and customers on features, functionality, performance and business value, use it for next planning session to enhance existing features or create new ones, reflect on operations activities for developers to avoid past incidents happening again

Continuous integration, Continuous delivery and Continuous deployment

Automation is a core principle for achieving DevOps success and CI/CD is a critical component. CI/CD comprises of continuous integration and continuous delivery or continuous deployment. Put together, they form a “CI/CD pipeline” – a series of automated workflows that help teams cut down on manual tasks:

  • Continuous integration – CI – regularly merge code changes into a central repository, run automated builds and tests, find and address bugs quicker, improve software quality and reduce the time it takes to release new updates
  • Continuous delivery – CD – automatically build code changes, test and prepare for a release to production, deploy all code changes to a testing environment, always have a deployment-ready build artifact
  • Continuous deployment – CD – automatically deploy code changes to production, rely heavily on well-designed test automation, stop overloading the Operations team with manual processes and speed up the delivery, continuously receive and incorporate user feedback

Difference between Continuous delivery and Continuous deployment

In a CI/CD pipeline that uses continuous delivery, automation pauses when developers push to production. A human still needs to manually sign off before final release, adding more delays. Continuous deployment automates the entire release process. Code changes are deployed to customers as soon as they pass all the required automated tests.

DevOps pillars

  • Culture
  • Lean
  • Automation
  • Measurement
  • Sharing

DevSecOps

Like development and operations, DevSecOps integrates automated security testing into every part of DevOps culture, tooling, and processes.

Instead of happening at the end of the SDLC, DevOps security starts at the source: Code. This approach is commonly known as DevSecOps or “shifting left.” Using automated security tools, developers find and address security vulnerabilities as they code instead of waiting for security teams to address them after deployment.

By empowering developers to take responsibility for security throughout the DevOps lifecycle, DevSecOps allows development, operations, and security teams to find and remediate security issues faster.

Infrastructure as Code (IaC)

Infrastructure as code is a practice in which infrastructure is provisioned and managed using code and software development techniques, such as version control and continuous integration.

The cloud’s API-driven model enables developers and system administrators to interact with infrastructure programmatically and at scale, instead of needing to manually set up and configure resources. DevOps engineers can interface with infrastructure using code-based tools . They treat infrastructure in a manner similar to how they treat application code.

Because they are defined by code, infrastructure and servers can quickly be deployed using standardized patterns, updated with the latest patches and versions, or duplicated in repeatable ways.


Agile Software Development