Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hamdiz0/learning-devops
https://github.com/hamdiz0/learning-devops
automation aws build-tools cicd devops docker git jenkins kubernetes linux nexus
Last synced: 10 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/hamdiz0/learning-devops
- Owner: hamdiz0
- License: mit
- Created: 2024-08-08T14:49:45.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-12-14T21:33:48.000Z (12 days ago)
- Last Synced: 2024-12-14T22:26:06.468Z (12 days ago)
- Topics: automation, aws, build-tools, cicd, devops, docker, git, jenkins, kubernetes, linux, nexus
- Language: Shell
- Homepage:
- Size: 18.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# What is DevOps ?
## `devops is not` :
- devops is not a tool
- not a separate team
- not just automation
- not simply combining Dev and ops teams=> devops is not just Dev and Ops working together while remaning in thier seperate silos
## `devops is` :
- devops is based on agile priciples
- devops is based on CI/CD
- delevering software in a rapid continuous manner
- Dev and Ops teams working togther not in seperate silos=> devops is a "CULTURE CHANGE" in wich Dev and Ops engineers work together during the entire development cycle
=> devops is a methodology that integrates software development (Dev) and IT operations (Ops) to improve collaboration, accelerate software delivery, and ensure more reliable system# [`When to use DevOps ?`]
## `when` :
- rapid and Frequent Releases (frequent and rapid updates)
- collaboration and Communication Issues (devops breaks silos and improve collaboration)
- scalability and Growth (devops work well with cloud-based environment ,automated infrastructure and CI/CD ...)
- continuous Feedback and Improvement (user feedback helps)
- complex Systems with High Availability (mission-critical systems where uptime and reliability are essential)
- microservices Architecture## `when not` :
- small, static projects
- heavily regulated industries with slow change (goverment or medical fields)
- Legacy Systems with Monolithic Architecture# [`Software Development Roles`]
- there are different roles in software development & delevery process
## `software development` :
- software programmed by devs using different programming languages
- add new features and bug fixes## `software testing` :
- test new features and old functionality
- manual and automated testing
- done by testers## `operations (software release)` :
- build application
- deploy on servers
- upgrade existing software
- done by opertions team# [`traditional : development vs operatons`]
- different responsabilities
- different technical knowledge
- different toolsets## `development` :
- focus on implementing new features fast
- programming languages
- test framworks
- databases
- version control## `operations` :
- focus on maintaining stability
- os
- command line
- scripting
- monitoring tools## `this seperation between the development and operation team causes multiple issues` :
- "well it works on my machine !!!"
- different responsibilities , different technical knowledge and different tools
- this will slow down the release process (weeks to months)### `misscommunication and lack of collaboration ` :
- deployment requires configuration and environment needs to be prepared
- dev team give instructions to the ops team ,these instructions may not be clear enough or some parts are missing### `conflict of intrest` :
- DEV focus on realising new features
- OPS focus on maintaining stability### `manual work and checklist` :
- manual checks : are the system stability and security affected by the new changes
- manual deployment
- manual configuration# [`solution DevOps`]
## `defenition` :
- devops is the intersection of DEV and OPS
- a common language to ensure the communication between devs and ops team
- devops is all about making the process of continious delivery fast and with minimal errors
- it tries to remove all these roadblocks and things that slow down the release process
- it helps create fully streamlined automated process for release cycles## `devops as a seperate role` :
- devops become an acual role : "devops engineer"
- devops tools : set of technologies used to implement devops
- a devops engineer is responsible for creating a streamlined fully automated release process
- basic knowledge of the development and operation and additional devops specific skills## `famous devops tools` :
- source code manegment : git
- package management : docker
- infratructure as code : terraform ,ansible
- CI/CD : jenkins ,git web service
- container orchestration : kubernetes
- cloud : aws ,azure ,google cloud
- monitoring : prometheus# [`waterfall vs agile methedologie`]
## `waterfall` :
- requirements : planning
- development : code complete app
- testing : testing the hole app
- operations : huge preparation
=> this an ineffective process :
- over time new requirements may arise
- miscommunication and places of faliure
- lack of fast feedback## `agile` :
- agile is the heart of CI/CD process
- devops implements some best practices of the agile method
- backlog => analyse => define => design => test => deploy
=> this method is effective and its increasingly growing :
- speed of development , testing and deployment cycles
- each feature gets tested , deployed and gets immediate feedback
- fast development and deployment process
- scrum and kanban (examples of specific implementations)
# [`at the core of devops`]
- CI/CD pipline for an automated release process
- commit code => test => build => push => deploy