As we seen about Software delivery life cycle, next interesting topic to discuss is Devops Terms, what is mean and what its does. What are those?
- Continuous Integration
- Continuous Delivery
- Continuous Management
- Infrastructure as code
As we seen software delivery environment is keep changing its hard for developer and QA to maintain the high quality with rapid changes. Its forced adopt some automation technologies like Continuous Integration (CI). Continuous integration contains the tools, such as Version Control Systems (VCS), Build Server and Testing.
Version Control System is kind of database. It lets you save a snapshot (Snapshot is the entire state of your project at a given point of time.) of the complete project at any point of time. It helps developer to maintain source code in central server. It prevents from overwriting and conflicting with other developers.
Version Control Systems (VCS) are tools that help teams manage and track changes in code over time.
As we know already Git is a widely popular Version Control System and its developed by Linus Torvalds.
Same as VCS, there is centralized build server connected with VCS, which build the source code periodically or when developer make changes/updates in VCS. It automatically triggers the new build. Its also notify the developer on build failure. It helps to find the root cause, or which commit broke the build.
Once build is successful, testing tools will start the unit testing with integrated tools. Once testing is done, it notifies to developer and QA to team. This helps to identify code quality.
Here is the entire flow of CI:
Continuous Integration with deployment automation is the ideal process for the server application to service to customers. Its not easy to achieve automatically, there is lot of key facts needs to be considered like, how to deliver the application to server? How gracefully shutdown existing application? How to replace and rollback the application on failure scenarios? How to modify OS parameters which deploy (if needed)? And so on.
Because the infrastructure includes the server and network, it all depends on an environment such as Dev/QA/Staging/Production. Each environment has different server configuration and IP address.
Continuous delivery is the practice that could be achieved; It is combination of CI tools, Configuration management and orchestration tools.
There is very small difference between Continuous deployment and delivery. Here is the both flows to understand better.
Continuous Delivery Deployment Types
Now, we’re going to examine the four major deployment types and outline each of their advantages and disadvantages. These are:
- Rolling application updates
- Blue/Green deployment
- A/B testing
- Canary Testing/Deployment
All the image from Medium
To understand Each better please refer Continuous Deployment Strategies.
A configuration management (CM) system is used to keep track of an organization’s hardware, software and related information. This includes software versions and updates installed on the organization’s computer systems. CM also involves logging the network addresses belonging to the hardware devices used. Software is available for all these tracking tasks.
Configuration management may also be called configuration control.
Infrastructure as Code (IaC)
Infrastructure as code (IaC) is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools. The IT infrastructure managed by this comprises both physical equipment such as bare-metal servers as well as virtual machines and associated configuration resources. The definitions may be in a version control system. It can use either scripts or declarative definitions, rather than manual processes, but the term is more often used to promote declarative approaches.
IaC approaches are promoted for cloud computing, which is sometimes marketed as infrastructure as a service (IaaS). IaC supports IaaS but should not be confused with it.
Cloud orchestration is typically used to provision, deploy or start servers; acquire and assign storage capacity; manage networking; create VMs; and gain access to specific software on cloud services. This is accomplished through three main, closely related attributes of cloud orchestration: service, workload and resource orchestration. An orchestration platform can integrate permission checks for security and compliance.