DEV Community

loading...
Cover image for DevOps and CI/ CD - Faster time to market

DevOps and CI/ CD - Faster time to market

Dhruvesh Patel
A seasoned Cloud Solution Architect and hands-on Cloud-native backend developer
・3 min read

This post will talk about DevOps and Continuous Integration / Continuous Delivery to bring new products and services faster to market.

What is DevOps?

DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality.

DevOps is intended to be cross-functional mode of working, which uses wide variety of toolset that fits into one of the below category.

  • Coding – code development and review, source code management tools, code merging.
  • Building – continuous integration tools, build status.
  • Testing – continuous testing tools that provide quick and timely feedback on business risks.
  • Packaging – artifact repository, application pre-deployment staging.
  • Releasing – change management, release approvals, release automation.
  • Configuring – infrastructure configuration and management, infrastructure as code tools.
  • Monitoring – applications performance monitoring, end-user experience.

As we have seen in cloud-native series, cloud-native systems embrace microservices, containers, and modern system design to achieve speed and agility. But that's part of the story. How do we provision cloud environment? How do we rapidly deploy new features and updates? That's where DevOps Automation comes into picture - Infrastructure Automation and Deployment automation.

Infrastructure Automation

This is popularly known as Infrastructure as Code (IaC), it enables to declaratively script and provision the required cloud infrastructure.

The cloud resources are parameterized and dynamic, version-controlled as an artifact with code. The parameters can change across environments such as dev, qa, staging and prod. But it allows to have consistent and repeatable infrastructure across environments.

Terraform, Azure ARM and AWS Cloudformation are such IaC tools, and terraform is widely used.

Following image has some basic terraform commands.

Basic Terraform Commands

Deployment Automation

12-factor app principles discussed earlier in first part of this blog series mentions about principle 5 - Each release must enforce a strict separation across the build, release and run stages. Each should be tagged with a unique ID and support the ability to roll back.

Modern CI/ CD Pipelines allow to fulfill this principle.

Following diagram shows typical flow for setting up CI/ CD pipelines.

CI/ CD Pipelines

  • CI - Continuous Integration part is where the code push triggers a build stage that transforms the code into a binary artifact.

  • CD - Continuous Deployment part is where the release stage picks up the binary artifact, applies external application and environment configuration information, and produces an immutable release. The release is then deployed to a specified environment.

And finally, the released feature is run in the target execution environment. Releases are immutable meaning that any change must create a new release.

Azure DevOps is one-stop solution for all DevOps and agile needs for embracing automation. All other public cloud providers offer parallel tools for DevOps and CI/ CD.

Following image shows CI/ CD pipelines flow using Azure DevOps.

Azure DevOps - CI/ CD Pipeline

DevOps Culture Adoption

By adopting DevOps culture in organizations and using automation mentioned above, Organizations have achieved significantly faster time to market. Moved from one in a quarter release to on-demand updates or at least per week / per sprint release cycle. The goal is to release frequently, gather feedback and fail-fast early in the development cycle, when it is less expensive to improvise / fix. CI/ CD practices allows better collaboration across teams and software quality, as it automates mundane, repeated tasks. DevOps adoption is key for achieving high performance across organization as it lets teams focus efforts on building important business features and bring growth.

I hope you enjoyed reading this cloud-native series and learnt something new. Cloud-native application empowers digital disruption to brings better products and services to market - with quality and speed.

Happy journey to cloud-native adoption and transformation !

Please like, share and comment your views/ opinion.

Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.

Discussion (12)

Collapse
shreya1310 profile image
Shreya1310

I really like your cloud native blog series. Precise and informative content!!! You're doing great job👍

Collapse
dhruvesh_patel profile image
Dhruvesh Patel Author

Thanks for the kind words. Glad that it is useful.

Collapse
hennalyons profile image
Henna Lyons

Write more blog related to this topics love to read...

Collapse
dhruvesh_patel profile image
Dhruvesh Patel Author

Sure will do...In the meantime, if you want to learn more about Continuous deliverym then I recommend reading this book - amazon.com/Continuous-Delivery-Dep...

Collapse
amandahopkins profile image
AmandaHopkins

superb article

Collapse
dhruvesh_patel profile image
Dhruvesh Patel Author

Thank you.

Collapse
saswatshah profile image
saswatshah

impressive, thanks for the post

Collapse
dhruvesh_patel profile image
Dhruvesh Patel Author

Glad that you enjoyed reading the post and hopefully learnt a thing or two to think aloud and embrace devops culture.

Collapse
luciolangworth profile image
LucioLangworth

Nice Comparison between DevOps and CI/ CD ..

Collapse
dhruvesh_patel profile image
Dhruvesh Patel Author

Thanks for the feedback.

Collapse
phyllisroberts profile image
PhyllisRoberts

Very Good Man..

Collapse
dhruvesh_patel profile image
Dhruvesh Patel Author

Happy to help.