The presentation about the fundamentals of DevOps workflow and CI/CD practices I presented at Centroida (https://centroida.ai/) as a back-end development intern.
5. CI / CD as a subset of DevOps
CI - continuous integration (e.g. DEV)
development practice that requires developers to
integrate code into a
shared repository several times a day.
CD - continuous delivery/deployment (e.g. LIVE)
closely related to Continuous Integration
and refers to the release into production of software
that passes the automated tests
6. CI / CD Benefits
● No more long and tense integrations
● Early detection of issues and ‘nipping them in the bud’
● Spending less time debugging and more time adding features
● Delivering software more rapidly
● Agile
7. CI / CD Practices
● Maintain a single source repository
● Automate the build & test processes
● Test in a clone of the production
environment (sort of a.k.a. ‘staging’)
● Make it easy for anyone to
get the latest executable version
● Everyone can see what’s happening
8. CI / CD Example with Gitlab
How the does process flow?
1. Develop and finish some feature (on a separate branch, e.g. feat-foo)
2. Prepare unit tests for it (input - output: what do you expect?)
3. Push into remote origin/feat-foo
4. Gitlab Runners ‘triggered’: they start running the unit tests (and not only)
5. If unit tests pass, git merge into origin/master; else { fix.your.bugs() }
6. As soon as origin/master merge, automatically deploy to PaaS (e.g. AWS).
Merge and deployment automated. But you can do more.
10. Environments
Development
Experiment, add features, fix bugs, etc.
Staging
Candidate for becoming a new (release version) ‘Production’
Production
Your app can be downloaded by anyone on Earth
(unless aliens hack the satellite)
11. Tests
Unit testing testing 1 unit/module at a time.
Integration testing testing features as a whole group.
E2E or end-to-end testing service/app is performing as designed from start to
finish.
Stress testing ‘how robust and stable is your service/app?’
12. Other strategies are possible.
Hence, be creative and choose whatever
fits you best.
13. Tools:
Puppet, Chef, Kubernetes, Docker, Travis, Jenkins
Online courses:
https://www.udemy.com/modern-devops/ Modern DevOps by Udemy
https://www.udacity.com/course/intro-to-devops--ud611
Introduction to DevOps by Udacity (truly fast way to learn everything you need)
and many more ...