Technology innovations keeps evolving faster with time and these innovations are centered around “Doing things faster and easier” and as engineers and developers we are at the core of these innovations, we create products and solutions that makes life easier for users, which is an excellent thing because we believe we are changing the world for the best one solution at a time, But at what cost?
How much does it cost you in time, money and resources expended to actually solve a problem in the society and release that solution for users to use, most times this is what the business is concerned with because this is what determines if they are making profit and whether or not they should keep paying you to develop these solutions. but this write-up is not about the business side of software development rather this write-up is about how you as a developer can get the most out of your development life cycle and how you can work effectively and efficiently by optimising your development process using CI/CD.
No matter how good your solution is, or how much resource you put to it, if its not making money, its not making sense
Our goal as developers and engineers is to help our organisation maximize profit from the solutions and the products we built and to achieve this, different software development life cycles has been developed over the time, ranging from waterfall development to agile development to scrum practices and now we are in the Devops era, and devops is the most recent modern approach to building great softwares.
DevOps is a way of working that focuses on regularly shipping quality software that meets a business need. It’s often achieved through better collaboration inside the organisation, with special attention paid to improving throughput by removing roadblocks.
The goal of devops is to ship high quality software in the most sustainable way possible, to do this we have to remove everything that will hinder us from achieving this goal, this is what CI/CD is all about.
What is CICD?
CI/CD is a popular acronym fully known as Continuous Integration, Delivery, and Deployment pipeline. CI/CD has been around even long before the advent of the internet they just didn’t have a name for it, the most profound example of CI/CD implementation before the technological era is the oil and gas industry.
In 1872, Rockefeller started creating pipelines to deliver oil from his refinery to other neighbouring towns in order to avoid the large amount he pays to the rail company that helps transport his refined oil, which is not just expensive but also slow. John D Rockefeller took the pain in building thousands of miles of pipelines to solve the major pain point of his business, which is high cost of delivery using the rail transport system, by the time the pipeline is complete, the pipeline was over 4000 miles long stretching across Ohio and Pennsylvania and connecting thousands of the worlds most lucrative oil wells directly to Rockefellers refineries, in the end John D Rockeller not only revolutionalized the way oil is being transported but also increased his oil delivery throughput by refining and delivering,
Before that Rockefeller’s was producing 280 barrels of oil per day, compared too 2000 per day, that is 1000% increase in production.
Now, relate that to your Software Development Life Cycle, that is by how much you will increase your production rate using continuous integration, delivery and deployment.
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. — — https://www.thoughtworks.com/continuous-integration
By integrating regularly, you can detect errors quickly, and locate them more easily.
Because you’re integrating so frequently, there is significantly less back-tracking to discover where things went wrong, so you can spend more time building features.
Continuous Integration is cheap. Not integrating continuously is expensive. If you don’t follow a continuous approach, you’ll have longer periods between integrations. This makes it exponentially more difficult to find and fix problems. Such integration problems can easily knock a project off-schedule, or cause it to fail altogether.
Continuous Integration brings multiple benefits to your organization:
- Say goodbye to long and tense integrations
- Increase visibility enabling greater communication
- Catch issues early and nip them in the bud
- Spend less time debugging and more time adding features
- Build a solid foundation
- Stop waiting to find out if your code’s going to work
- Reduce integration problems allowing you to deliver software more rapidly
Continuous Delivery (CD)
Continuous Delivery is an extension of continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way. This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button.
There is no standard delivery pipeline but their are rules guiding having a delivery pipeline which are:
- Automated Testing
- Automated Builds
- Deployment Autimation
Continuous deployment goes one step further than continuous delivery. With this practice, every change that passes all stages of your production pipeline is released to your customers. There’s no human intervention, and only a failed test will prevent a new change to be deployed to production.
CI/CD Flows to implement in your organization
There are different ci/cd flows and really there is no one size fits all approach to building an automated ci/cd pipeline, mostly your flow will be determine by the tools or cloud service you use, but you can learn from some of the popular flows being used out there, I for one has like 4 different flows that I use and implement and works for my organization perfectly . you can get to learn about them here.
Now that we knwo the importance of ci/cd, lets go on to the majpor reason why you are, there are different ways to build your develpopment pioleines depending on what you r your organization wants, and i will be talking you throguh different deployment flows, then you weigh it and choose whichever you think will work for you.
To ensure an effective Software Delivery Life Cycle (SDLC) we are encouraged to make use of Continuous Integration and Continuous Delivery flows. This flow makes your code delivery faster and easier and as an Engineer, you will not have to spend your productive time fixing dependencies issues or configuring web servers for every environment you want to deploy your code.
In the next of my write-ups, we will be looking more into different cicd flows that has been implemented by different organisation, we will learn how to set it up too, and also how to integrate things like automated testing and automated reporting into our flow. So, Be Expectant.
This article was originally published at https://www.linkedin.com/pulse/what-does-cicd-really-mean-adedayo-akinpelu/