Versioning - Git: A free and open-source, command-line tool for a distributed version control system (DVCS) designed for speed and efficiency, allowing developers to track/revert changes in source code.
GitHub: A web-based platform for developers to store, manage, and collaborate on code using the Git version control system.
GitLab: A web-based DevOps platform that provides a single application for the entire software development lifecycle.
GitHub Actions: It is a continuous integration and continuous delivery (CI/CD) platform integrated directly into GitHub. It enables the automation of software development workflows within your GitHub repositories.
Docker: It is a platform for creating, packaging, and distributing individual applications in containers.
Kubernetes: It is an orchestration system for managing many containers, including those created by Docker, across a cluster.
Jenkins: It is an automation server that helps automate tasks related to building, testing, and deploying software.
Ansible: It is an open-source IT automation engine that simplifies configuration management, application deployment, and task orchestration.
Terraform: It is an open-source tool for Infrastructure as Code (IaC) that automates the provisioning and management of cloud and on-premises infrastructure.
Prometheus: It is an open-source system monitoring and alerting toolkit for cloud-native environments
Grafana: It is an open-source observability platform that lets you query, visualize, and set alerts on your metrics, logs, and traces no matter where they are stored.
ELK Stack: It is an open-source tool suite for log management and real-time data analysis, consisting of three core components: Elasticsearch, Logstash, and Kibana.
SonarQube: It is an open-source platform for automated code quality and security analysis that helps developers find and fix bugs, vulnerabilities, and code smells
CircleCI: It is a cloud-based continuous integration and continuous delivery (CI/CD) platform that automates the build, test, and deployment of software.
HashiCorp: It is a suite of tools and products that enable developers, operators and security professionals to provision, secure, run and connect cloud-computing infrastructure.
DevOps is a software development methodology that unites development and operations teams to deliver software faster, more securely, and more efficiently.
AIM: Breakdown barriers/boundaries between developers (Dev) and operations (Ops) by promoting collaboration and shared responsibility, enabling organisations to deliver applications and services faster and more reliably.
Automation of the software development lifecycle: Automating testing, builds, releases, the provisioning of development environments, and other manual tasks that can slow down or introduce human error into the software delivery process.
Collaboration and communication: Encourage close teamwork and communication between development and operations teams.
Continuous improvement and minimisation of waste: DevOps teams regularly look for areas that can be improved, either through automation or by monitoring performance metrics to find ways to reduce release times or mean-time-to-recovery.
Hyperfocus on user needs with short feedback loops.
DevSecOps extends DevOps by embedding security checks and compliance into every stage of the development lifecycle.
DevSecOps ensures DevOps teams understand the security and compliance requirements from the very beginning of application creation and can properly protect the integrity of the software.
Integrating security into DevOps workflows, teams gain the visibility and control necessary to meet complex security demands, including vulnerability reporting and auditing.
Security teams can ensure that policies are being enforced throughout development and deployment, including critical testing phases.
DevSecOps can be implemented across an array of environments such as on-premises, cloud-native, and hybrid, ensuring maximum control over the entire software development lifecycle.
The lifecycle starts from the beginning of software development through to delivery, maintenance, and security.
Plan: This phase focuses on understanding the business needs and gathering feedback from end-users. Teams create a plan that aligns the project with business goals and ensures the delivery of the right results.
Code: In this phase, developers write the actual code for the software. Tools like Git help manage code, ensuring that it is well-organised and free from security issues or poor coding practices.
Build: Once the code is written, it is submitted to a central system using tools like Jenkins. This step ensures the code is compiled, and all components are integrated together smoothly.
Test: The software is then tested to ensure it works properly. This includes different types of tests like security, performance, and user acceptance. Tools like JUnit and Selenium are used to automate these tests and verify the software’s integrity.
Release: After testing, the software is ready to be released to production. The DevOps team ensures that all checks are passed and then sends the latest version to the production environment.
Deploy: Using Infrastructure-as-Code (IaC) tools like Terraform, the necessary infrastructure (servers, networks, etc.) is automatically created. Once the infrastructure is set up, the code is deployed to various environments in an automated and repeatable way.
Operate: Once deployed, the software is available for users. Tools like Chef help manage the configuration and ongoing deployment of the system to ensure it operates smoothly.
Monitor: This phase involves observing how the software is performing in the real world. Data about user behaviour and application performance is collected to identify any issues or bottlenecks. By monitoring the system, the team can quickly spot and fix problems that may affect performance.
Version Control: The core practice of tracking and managing every change made to source code (SCM) and other files.
Agile: Software development that follows an iterative, incremental, and lean approach to streamline and accelerate project delivery.
Continuous Integration (CI): Regularly integrating all code changes into the main branch, automatically testing each change, and automatically kicking off the build.
Continuous Delivery (CD): CD works in conjunction with CI to automate the infrastructure provisioning and application release process.
Shift Left: A term for shifting security and testing much earlier in the development process, to speed up development and improve code quality.
A DevOps platform brings tools together in a single application for unparalleled collaboration, visibility, and development velocity.
A DevOps platform is how modern software should be created, secured, released, and monitored in a repeatable fashion.
Automating testing, detecting anomalies, and improving security and performance monitoring.
AI and ML can find patterns, figure out the coding problems that cause bugs, and alert DevOps teams.
AI and ML can sift through security data from logs and other tools to detect breaches, attacks, etc, and then respond with automated mitigation techniques and alerting.
Continuous Development: The iterative and incremental approach to software development, where developers plan, code, and prepare software features in small, manageable units. It enables rapid feedback, early issue detection, and swift delivery of value to end-users. CD integrates closely with SCM and automation tools to streamline the dev process.
Continuous Integration: CI ensures code changes are automatically built, tested and integrated into the main codebase. It involves 4 key stages: (1) Source Code Management - devs push code to GitHub for collaboration and review, (2) Build Process - code compiling into artefacts, (3) Code Quality Checks - bugs, security issues, and (4) Artefact Repository - generated artefacts are stored in a repository manager.
Continuous Testing: Automatically every time there is a change to catch bugs early before code is pushed into production. Tools - Selenium, Testsigma, and LambdaTest.
Continuous Deployment/Continuous Delivery:
Continuous Deployment: The process of automatically deploying an application into the production environment after completing the testing and build stages.
Continuous Delivery: The process of manually deploying an application into production servers after completing the testing and build stages.
Continuous Monitoring: Can be achieved with the help of Prometheus and Grafana to monitor (hardware - CPU, RAM, network traffic) and get notified before anything goes wrong;
Continuous Feedback: After release, end-users will give feedback about application performance and glitches. DevOps teams will analyse the feedback and rectify the code to eliminate/reduce the errors or bugs and improve performance.
Continuous Operations: Aimed at sustaining higher application uptimes, it also assists in cutting down on the maintenance downtime that will negatively impact end-user experiences. For example, instead of shutting the app down, Continuous Operations ensures the update happens in the background.