Skip to main content
DevOps & CI / CD
Version control conflicts
Much dependent on other team members
Bugs, many bugs
Slow, volatile, and error-prone software delivery
Problems
DevOps
Software engineering approach to bridge the gap between
agile software development and operations
DevOps principles
Version control
Automated testing
Kanban/Scrum
CI/CD
Virtualization, cloud, and containers
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
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
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
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.
Workflow
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)
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?’
Other strategies are possible.
Hence, be creative and choose whatever
fits you best.
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 ...
And remember,
Prepared by Batyr Nuryyev for Centroida.ai