DevOps Transformation for Enhanced Agility

key point

Key points

This article will explore the initial steps to kick-start a DevOps transformation, shedding light on essential concepts, release management, automation , and monitoring.

Introduction

In the world of software development, DevOps (Development + Operations) and Agility come together for greater efficiency.

DevOps automates the steps, ensuring continuous integration (CI) and continuous deployment (CD), while breaking down barriers between development and operations teams.

This synergy between DevOps and Agility creates a culture that fosters continuous innovation. Faster development cycles, consistent quality thanks to CI/CD.

HOW DO I START A DEVOPS TRANSFORMATION?

EVALUATE AND ESTABLISH OUR DEVOPS ROADMAP

1st step : We bring together the stakeholders of a project and we carry out an assessment of the current level of maturity on the different themes proposed: Culture and Organization, Design and Architecture, Build and Deployment, Testing and Verification, Information and Reporting.

  • Allows for uniform sharing around current practices
  • Allows us to discuss the themes and share the vision around the practices

Step 2 : We set ourselves ambitions and objectives around this maturity model

  • We evaluate our target level on each of the themes

Step 3: We build our roadmap to reach the previously established target

  • This roadmap will be the guiding thread to assess overall progress

MAKING THE PRODUCT LIFE CYCLE VISIBLE: VALUE STREAM MAPPING

Conducting a VSM workshop means showing a realistic picture of the life cycle of an application as a whole.

The goal of VSM is to reduce the time between request and opening to users. It is carried out in 4 steps:

  • Map the current state with value-added and non-value-added actions (delay)
  • Measure the times of each of the stages
  • Identify areas for improvement and implement actions to achieve them
  • Change the current state to the future state once actions are taken

 

ESTABLISHING AND ANIMATING A DEVOPS COMMUNITY

Create an organization-wide DevOps community:

  • Development-side technical experts
  • Operators
  • Hosts
  • Theme Sponsors
  • Etc.

Animate this community in an agile way

  • Create a Product Backlog, set up a continuous improvement process – retrospective, set up the notion of sprint (one-month sprints for example), etc.
  • Bridging Development (Dev) and Operations Teams (Ops)
laugh

DevOps and Agility : where code errors become ‘unexpected features‘ and where every meeting is a training session for sprint marathons. It’s almost like doing acrobatics, but with waiters instead of balls.

KEY DEVOPS CONCEPTS TO GET STARTED

Everything as Code:

  • Infrastructure as Code
  • Configuration as Code
  • Pipeline as Code
  • Documentation as Code – Living Documentation

SSOT – Single Source Of Truth.

Continuous Integration – Branch by Abstraction – Feature Flipping – Release Management Monitoring.

Automation – Continuous Delivery.

INFRASTRUCTURE AS CODE

Why change architecture to a cloud-based architecture?

  • Make delivery a non-event
  • Defining a Delivery Pipeline

Architecture Transformation Example

  • Goal : Automate infrastructure creation using definition as code
    • The manual action of implementing an environment has no added value
    • In the event of an incident, code correction, destruction, and reconstruction of an environment from its definition
  • Benefits : time saved to build and rebuild an environment and improved scalability of environments

Example of infrastructure as code for creating the Jenkins environment with Docker

CONFIGURATION AS CODE

Goal : Ensure the same runtime configuration across all environments

  • Using YAML to Describe Configuration
  • Storing the configuration with the source code
  • Consolidates application and runtime configuration

The configuration is built at the same time as the construction of the application binary

Benefits : Regardless of the platform, the application works with the same runtime environment

PIPELINE AS CODE

Objective : to be able to deploy at any time with the Pipeline

As soon as a source code is pushed to GIT, the integration pipeline is triggered

  • Packaging of the “Release candidate” application and its configuration
    • Building the application binary
    • Building Docker images
  • Execution of all Automated Tests: Automated Unit or Integration Testing …
    • In case of an error in the execution of the tests:
      • Deployment is interrupted
      • The team is informed in order to correct as soon as possible
  • Deployment to the integration environment
    • Database update
    • Deploying Application Components

Benefits : Deployment of stable versions, deployment on the “Integration” environment is only done if all automated tests are passed.

Pipeline Example:

LIVING DOCUMENTATION

Objective : to bring documentation to life in the same cycle as the source code

  • Document the product throughout its construction
  • Build functional and technical documentation
    • The documentation produced corresponds to what is completed
    • Build technical documentation from source code elements

Benefits : Up-to-date and easily maintainable documentation

important

Important!

Avoid writing a 300-page specification before producing the 1st line of code

SSOT: SINGLE SOURCE OF TRUST

Objective : To have a single repository for ANY element of the project (Single Repository Of Trust)

Application

  • Application source code, as well as dependencies (libraries, static content, etc.)
  • All DB schema creation scripts, reference data, etc.
  • All automated testing, as well as manual scenarios
  • Any other artifacts of the project (functional documentation, technical documentation, release notes, etc.)

Packaging & Environments

  • All scripts allowing the packaging of the application, deployment, migration of data from the database and provisioning of environments
  • All of the tools for creating environments and artifacts described in the previous items
  • All files used to create containers (e.g. Docker file)

Configuration

  • All cloud platform configuration files
  • Any other scripts needed to configure the product in its environment

PLUGGED BY ABSTRACTION AND FEATURE FLIPPING

Example of a project context:

  • There can be several iterations in parallel at different phases in the production cycle (technical design, development, correction of internal anomalies, correction of acceptance anomalies, etc.)
  • Each iteration brings its share of corrections and changes
  • It is necessary to be able to deliver each iteration with the relevant content
  • There are several possible strategies

Use branches:

  • Involves the multiplication of Merges

A Merge Isn’t Always Automatic

A Merge is never done serenely

A merge is ultimately a set of standard code changes: requires testing each element of the merge

  • Increased risk of regression
  • Generates complexity

A branch can diverge drastically from the master’s degree

A branch can be maintained for several weeks, months, etc.

A Merge Is Potentially Impossible

  • This sometimes means re-implementing the solution
  • Not an ideal candidate for continuous integration

Who advocates a single job on the master’s degree

Who considers that the multiplication of jobs is complicated

  • Holding back a continuous deployment / DevOps approach

Branch by abstraction

  • Simply don’t use branches (at least not necessarily one by iteration)
  • No branch→ No merge
  • All developments are carried out on the master
  • Incomplete jobs are disabled by the use of feature flags
  • The master is always stable, ready to be delivered

Feature Flipping

  • Ability to enable and disable features at any time
  • Allows you to enable features for certain users only
  • If there is a problem, there is no going back, only deactivation.
  • Ability to push unfinished code
  • Avoiding Merge Problems

Feature Flipping is a practice related to continuous deployment

  • Used by the big web: Flickr, Facebook, Gmail, Netflix, Yellow Pages

RELEASE MANAGEMENT

  • Separating the concept of release from that of deployment
  • Possibility of using a Blue-Green Deployments technique
  • Possibility of using a Canary Release technique

Blue-green deployments

Canary Release

Ability to use a Dark Launch technique

  • This pattern makes it possible to deploy the non-visible part of a feature, gradually simulating the traffic that will be generated by the use of the target feature.
  • The objective of this pattern is to be able to validate the performance and scalability of the platform. By simulating the expected traffic gradually, we can prepare and optimize the platform so that the opening of the feature to end users takes place in the best conditions on D-Day.

MONITORING

User Behavior Tracking

  • Challenge users’ use of the product
  • Monitor the use of functions

Monitoring Environments

  • Technical and functional: response time, memory usage, etc.

AUTOMATION

Goal : Reduce manual actions with little value

  • Ensure process reproducibility

In the end, it is possible to find actions to automate at any level of the project:

  • Infrastructure
  • Testing
  • Generation of binaries and document deliverables
  • Deployment
  • Documentation

Process automation ensures that everyone involved in the project is well understood

Benefits : Faster feedback in case of errors and easier promotion of the application on different environments.

 

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *