Continuous Integration/Continuous Deployment- DevOps

Here are the basics of CI/CD for beginners. It’ll point out benefits, tools and flow of CI/CD. In the last section some useful links are mentioned for further learning on related topics. You will get idea about what DevOps and what benefits we get out of it.

What is Continuous Integration and Why Is It Helpful

•Maintain a single-source repository
• Make your build self-testing
• Automate the build
• Everyone commits to the mainline every day
• Every commit should build the mainline on an integration machine
• Keep the build fast
• Make it transparent
• Make it easy for anyone to get the latest executable
• Automate deployment

Continuous integration is a practice that encourages developers to integrate their code into a main branch of a shared repository early. The end goal of continuous integration is to make integration a simple, repeatable process that is part of the everyday development workflow in order to reduce integration costs and respond to defects early. Working to make sure the system is robust, automated, and fast while cultivating a team culture that encourages frequent iteration and responsiveness to build issues is fundamental to the success of the strategy .
Continuous deployment is an extension of continuous delivery that automatically deploys each build that passes the full test cycle.
Continuous,successful and repeatable methodology to deploying code.

Process Flow

CI/CD process flow.
CI/CD flow

Continuous Integration Tools

Jenkins.
TeamCity.
Travis CI.
Go CD.
Bamboo.
GitLab CI.
CircleCI.
Codeship.

Deployment Pipeline

• Continuous delivery is enabled through the deployment pipeline. The purpose of the deployment pipeline has three components: visibility, feedback, and continually deploy.
Visibility – All aspects of the delivery system including building, deploying, testing, and releasing are visible to every member of the team to promote collaboration.
Feedback – Team members learn of problems as soon as possible when they occur so that they are able to fix them as quickly as possible.
Continually deploy – Through a fully automated process, you can deploy and release any version of the software to any environment.

Benefits and obstacles

Accelerated Time to Market: CD lets an organization deliver the business value inherent in new software releases to customers more quickly. This capability helps the company stay a step ahead of the competition.
Improved Productivity and Efficiency: Significant time savings for developers, testers, operations engineers, etc. through automation.
Reliable Releases: The risks associated with a release have significantly decreased, and the release process has become more reliable. With CD, the deployment process and scripts are tested repeatedly before deployment to production. So, most errors in the deployment process and scripts have already been discovered. With more frequent releases, the number of code changes in each release decreases. This makes finding and fixing any problems that do occur easier, reducing the time in which they have an impact.
Improved Product Quality: The number of open bugs and production incidents has decreased significantly.
Improved Customer Satisfaction: A higher level of customer satisfaction is achieved.
Customer preferences: Some customers do not want continuous updates to their systems. This is especially true at the critical stages in their operations.
Domain restrictions: In some domains, such as telecom and medical, regulations require extensive testing before new versions are allowed to enter the operations phase.
Lack of test automation: Lack of test automation leads to lack developer confidence and can prevent using continuous delivery.
Differences in environments: Different environments used in development, testing and production can result in undetected issues slipping to the production environment.

DevOps

DevOps: Devops is the union of people, process & tools to enable continuous delivery of value to our end users. It is a culture, movement or practice. 
Devops is a term used to refer to a set of practice that emphasis the collaboration & communication of both software developer & other professionals while automating the process of software delivery & infrastructure changes.

Objectives:
• Source Code version control in TFS or Git or Bitbucket
• Build & release Automation
• Quality Control at TFS or Sonarqube or jenkins or other same tool
• Infrastructure Code & Docker.

Why Devops

  • Continuous delivery
  • Agile Planning
  • Build & Test
  • Develop & test
  • Delivery(Release)
  • Monitoring

Useful Links

  1. https://www.git-tower.com/blog/git-cheat-sheet/
  2. https://www.keycdn.com/blog/git-cheat-sheet
  3. https://www.codementor.io/@mattgoldspink/git-cheatsheet-du1088tr0
  4. https://itsfoss.com/basic-git-commands-cheat-sheet/
  5. https://git-scm.com/docs
  6. https://ndpsoftware.com/git-cheatsheet.html
  7. https://www.jenkins.io/
  8. https://octopus.com/
  9. https://xebialabs.com/integrations/xl-release-xl-deploy/
  10. https://jfrog.com/
  11. https://www.sonarqube.org/

Leave a Reply