Introduction to DevOps
Bootcamp Overview
Learn DevOps concepts:
test -> build -> deploy -> configure -> maintain
Topics:
- version control
- build tools
- CI/CD
- cloud - IaaS
- Infrastructure as Code
- containers
- container Orchestration
Cloud Platforms
- AWS
- DigitalOcean
- Linode
NOTES:
- be aware and check out the prices!
- delete all resource when done learning (to avoid paying things you don't need).
Intro to DevOps
Roles and responsibilities of a DevOps Engineer? It's a bit blurry and unclear...
Complete Software Development Process
- Programming
- who?: developers
- how?: many different programming languages
- one team per app/feature
- Software Testing:
- test the new features
- test the old code/functionality
- testing is done by developers and dedicated testers
- automated testing
- Release of Software
- build application
- run on servers
- upgrade existing software
- Operations Team
- run software in production
Traditional: Development vs. Operations
-
Developers:
- programming languages
- test frameworks
- databases
- version control
-
Operations:
- OS, mostly Linux
- command-line
- scripting
- monitoring tools
Due to many differences, many problems happen between those two types of people (Devs and Ops). Specially during the handover of the software to be deployed in production.
-
Different:
- responsibilities
- technical knowledge
- tools
-
Communication is important!!
-
in reality silos between those two!
Usually the instructions for deployment were given by Devs but due to the different competences between the two silos, the communication don't go as well as expected.
SOLUTION: DevOps culture!
- DevOps was just a way of working between Devs and Ops
- Common language to communicate
- Became its own role and job -> DevOps Engineer
- many new concepts and tools
DevOps tasks and responsibilities
- needs some know-how from Dev and Ops team
- be able to communicate with both sides
- additional DevOps specific skills and know-how
Waterfall vs. Agile
- influences speed and process of software development
- the way an organization is developing applications
Waterfall
- Requirements plan everything beforehand
- Development: developers code complete app
- Testing: testing after everything has developed
- Operations: huge preparation to deploy the software
- ineffective process
- over time new requirements may arise
- many places of failure and miscommunication
- no fast feedback
Agile Methodology
Benefits:
- speed of development, testingt and deployment cycles
- each feature ets tested, deployed
- immediate feedback
- fast development and deployment process
- scrum and kanban - specific implementations
Continuous Integration / Continuous Delivery
Agile and DevOps
The DevOps movement is bringing agility to the whole software life cycle (which was more common in only in the development team). Bringing the Operations to use the agile methods.