DevOps Concepts
Dedicated DevOps Engineer with a passion for automating infrastructure and streamlining workflows. Experienced in implementing CI/CD pipelines, containerization (Docker, Kubernetes), and cloud platforms (AWS). Seeking a challenging role to contribute to innovative projects and drive operational excellence
DevOps
DevOps is a software development methodology. It mainly merges Development and Operation components in the Software Development lifecycle. The important aspect of DevOps is to deliver software faster.
Example
For Instance, Developers build a new feature for the E-commerce platform like adding an order tracking feature but operations are not sure to release it may cause performance issues. With the DevOps approach, we can reduce the risks with the proper configuration of resources.
SDLC Models
Software Development Lifecycle - it is a process that defines Planning, Creating, testing, deploying, and maintaining software applications.
Example
Let's take Google Maps, When we need to travel from Point A to Point B we use Google Maps. This enables us to save a lot of time or else we need to manually follow the signs to get the destination Like wise SDLC provides a road map to develop software applications.
Lean SDLC: It focuses on delivering the most value to users as quickly as possible.
Information Technology Infrastructure Library SDLC: It is the Standardized framework for IT service management.
service strategy
service design
service transition
service operations
continual service improvement
- Agile SDLC: Iterative process and incremental development with continuous feedback. It mainly focuses on adapting to change requirements. This means frequent releases and rapid feedback cycles.
Why DevOps is important?
DevOps leverages Agile methodologies to foster collaboration between development and operations teams. From the Business point of view, DevOps increases the revenue and faster version upgrades of software.
History behind DevOps
In 2009 DevOps concepts came into the picture, it is a huge cultural shift in the IT industry.
DevOps stakeholders
Development Team
Operations Team
Security Team
Product Owners
Observability Engineer
Cloud engineer
Important terminologies Used
CI/CD
Infrastructure as Code(IAC)
Configuration Management
Version Control system
Repository
Continuous Testing
Deployment
Monitoring
DevSecOps
Observability
Provisioning
DevOps and Agile
Following are the benefits achieved with the combination of DevOps and Agile.
Faster Delivery
Improved Quality
Increased Reliability
Better Collaboration
Adaptability to change
DevOps Tools
DevOps Practices can be achieved with many technologies, while new frameworks will be released in the market regularly but the Tools will be standard.
| Tools | Technologies | Use Case |
| Version Control System | Git, Subversion | Track Code Changes Overtime |
| CI/CD Pipeline | Jenkins, GitLab CI/CD, Circle CI, Travis CI | Automate building, testing, and deploying code changes |
| Configure Management | Ansible, Puppet, Chef | Manage Configuration of Servers |
| Infrastructure As Code | Terraform, AWS Cloud formation, AWS CDK, Azure Resource Manager | Define and manage infrastructure as code files. |
| Containerization | Docker, Kubernetes | Packaging applications with all their dependencies into standardized units for easier deployment. |
| Monitoring and observability | Prometheus, Grafana, ELK Stack, Cloud Watch | Continuously monitor the performance and health of the application and infrastructure. |
| Security | SonarQube, Nexus Repository | Integrate Security Considerations, and fix security vulnerabilities in Code. |
| Communication | Slack, Microsoft Teams | Facilitates the communication between developers, the operation team, and other cross-functional teams. |
| Ticketing Tools | Jira, Service Now | to manage workflow |
| Documentation | Confluence | Acts as a central hub for all the company documents. |
Configuration Management
Configuration management is an approach to establishing the desired state of IT systems, Software applications, and infrastructure components.
Example
Imagine a company website is hosted on multiple web servers. To Set up and run a website we should need a desired state of system
The following are the requirements to achieve desired state
Operating System: Ubuntu 20.04
Web Server Software: Apache 2.4
Document Root: /var/www/HTML
Security Settings: Firewalls enabled with specific ports open (e.g., port 80 for HTTP access)
PHP Version: 7.4
Manually configuring this will be prone to error so we leverage tools like Ansible to achieve the desired state of the servers.
Continuous Integration and Deployment
Continuous Integration: It's a process where developers merge their code changes into a central repository, followed by automated builds, tests, and feedback loops.
Example
we use Jenkins as a continuous integration tool. To achieve CI we setup pipeline that we can build stages that compile the code and test it.
Deployment: It is the last step of the continuous integration process, usually passes all the tests and deploys the code into the desired environment - Testing, staging, and production.
Example
Web application update, Mobile App update
