DevOps theory: What is CI/CD and IaC?

Continuous integration

  • Continuous integration (CI) is a software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run.
  • Continuous integration focuses on smaller commits and smaller code changes to integrate. A developer commits code at regular intervals, at minimum once a day.
  • The developer pulls code from the code repository to ensure the code on the local host is merged before pushing to the build server A cloud services platform provides rapid access to flexible and low-cost IT resources that you can use to build and maintain software and databases and create applications to delight customers.

CI/CD can be pictured as a pipeline

Continuous delivery is not continuous deployment.

  • One misconception about continuous delivery is that it means every change committed is applied to production immediately after passing automated tests. However, the point of continuous delivery is not to apply every change to production immediately, but to ensure that every change is ready to go to production.
  • Before deploying a change to production, you can implement a decision process to ensure that the production deployment is authorized and audited. This decision can be made by a person and then run by the tooling.

What is infrastructure as Code?

  • The “Infrastructure” in laC refers to all the servers and services that you use to build, test, deploy, and run your app or product.
  • If your app runs on Elastic Compute Cloud (EC2) instances, then the infrastructure includes not only the EC2 instances but also the Virtual Private Cloud (VPC) in which the instances run, the NAT Gateways that your application use to connect to the internet, the Elastic Load Balancers (ELB) that handle traffic from your customers, and the Relational Database Service (RDS) databases in which your application stores data.

lac in DevOps

  • Infrastructure as code (laC) helps organizations achieve their DevOps goals of automation and self-service by maintaining declaration files in version control that define your application environments. This practice supports programmatic build, configuration, and destruction of environments while enabling self-service, reducing errors, and eliminating time-consuming rollbacks.

Leave a comment