Topics Discussed:
- Source Code Management
- Package Management
- Pipelines
- GitOps
- Progressive Delivery/Deployment
- Infrastructure as Code(IAC)
- Serverless
- Chaos Engineering
- Centralized Log management
- Monitoring
- Dashboards
- DevSecOps
Source Code Management
● Source Code Management(SCM) is a Devops automation tool that maintains a track of versions (revisions) made to the program.
● Each version has a timestamp and the person who made the changes. These versions can be compared and merged.
● SCM is also known as Version Control.Tools like Github,Gitlab,Bitbucket,etc are used.
Package Management
● Package managers eliminate the need for manual install and update tasks, as well as bundle all the necessary dependencies that the software requires to run on any environment together.
● Package files work with file archivers in order to extract all dependent packages once the user issues a software command.
● Developers→Create executable code→Packages→Central artifacts repo.
Pipelines
● A pipeline is a set of automated processes and tools that allows both developers and operations professionals to work cohesively to automate repeated day to day tasks.
● While a pipeline can differ by organization, it typically includes Continuous Integration/Continuous Delivery/Continuous Deployment(CI/CD),Continuous Feedback i.e. Continuous Testing,Continuous Monitoring,Continuous Operations.
● Set of tasks includes compiling,building,testing. Typically defined in a json/yaml file for execution. These files are executed by Automated systems (eg: Jenkins).
● Pipelines are executed manually by engineer, or triggered by an event (eg: Github Webhook causes Jenkins jobs to run).
GitOps
● GitOps is a specific System Operations (ops) process tied to a specific tool (Git).
● It’s an evolution of Infrastructure as Code (IaC) and a DevOps best practice that leverages Git as the single source of truth, and control mechanism for creating, updating, and deleting system architecture.
● Almost every work may be easily converted to GitOps – Pipelines, Production Deployments, Monitoring / log processing system updates, Configurations, etc.
Progressive Delivery/Deployment
● Blue/Green Deployment.
Blue-green deployment is a technique that reduces downtime and risk by running two identical production environments called Blue and Green.
● Rolling Updates
A rolling deployment is a software release strategy that staggers deployment across multiple phases, which usually include one or more servers performing one or more functions within a server cluster. Rather than updating all servers or tiers simultaneously, the organization installs the updated software package on one server or subset of servers at a time. A rolling deployment is used to reduce application downtime and unforeseen consequences or errors in software updates.
● Canary deployments
Deploy your new version of the software to a few users, and watch the progress through monitoring and logs. After you gained confidence, you can gradually move all users to the new version and delete the old versions.
Infrastructure as Code(IAC)
● Infrastructure as Code (IaC) is the managing and provisioning of infrastructure through code instead of through manual processes.
● With IaC, configuration files are created that contain your infrastructure specifications, which makes it easier to edit and distribute configurations. It also ensures that you provision the same environment every time.
Serverless
● Serverless computing services eliminate user responsibility for the management or operation of infrastructure.
● Serverless computing services enable users to run code on-demand according to requests or event triggers. Infrastructure use scales transparently based on how many requests or events occur.
● Serverless computing is pay-for-use and can be used to ensure that users pay only for actively used resources.
● Serverless computing services enable users to run code on-demand according to requests or event triggers. Infrastructure use scales transparently based on how many requests or events occur.
● Serverless computing services eliminate user responsibility for the management or operation of infrastructure.
● With serverless, you can deploy your pipeline without hosted solutions. You are only responsible for “glue code.”
● This infrastructure is flexible and you can easily modify it as needed using infrastructure as code (IaC) solutions and automated events.
● Three major cloud providers offer serverless computing services are AWS Lambda,Azure Functions,Google Cloud Functions.
Chaos Engineering
● Chaos Engineering will introduce real time failures into systems to assess system ability to tolerate failures, recoverability, resiliency and high availability.
● By designing chaos engineering experiments you can learn weaknesses in the system that could potentially lead to failures.
● Chaos engineering leverages observability to discover and overcome system weaknesses. Without observability, there is no chaos engineering.. Introduction of continuous chaos in your DevOps CICD pipeline helps automating experiments and failure testing
● Chaos engineering experiments coupled with cognitive observability study of complex systems using trend analysis, regression analysis and time series analysis will help take the systems into newer heights.
Centralized Log Management
● Centralized log management system is the ability to see all of the data.
● With centralized logging, in other words, you can collect logs from your dev/test environment (which is where developers test and troubleshoot new releases before handing them off to the IT team) into the same place where you collect logs from production environments.
Monitoring Dashboard
● A set of metric groups or custom views that you can use to monitor the performance of the systems defined in the System Status task.
DevSecOps
● DevSecOps is the philosophy of integrating security practices within the DevOps process.
● DevSecOps involves creating a ‘Security as Code’ culture with ongoing, flexible collaboration between release engineers and security teams.
● DevOps is the process of integrating development and operations, while DevSecOps is a subset of that which focuses on security.
● The main purpose of DevSecOps is to provide premium security while also applying faster speed of process, accessibility, and scalability
● The goal is to provide a safe and secure way to share security decisions while maintaining the highest level of security, speed, and control
● The main advantage is to spot bugs early on Reduce risk and legal liability,Reduce costs on resource management.