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

Fundamentals of DevOps and CI/CD

  • 1.
  • 2.
    Version control conflicts Muchdependent on other team members Bugs, many bugs Slow, volatile, and error-prone software delivery Problems
  • 3.
    DevOps Software engineering approachto bridge the gap between agile software development and operations
  • 4.
    DevOps principles Version control Automatedtesting Kanban/Scrum CI/CD Virtualization, cloud, and containers
  • 5.
    CI / CDas 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 / CDBenefits ● 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 / CDPractices ● 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 / CDExample 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.
  • 9.
  • 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 testing1 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 arepossible. 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 ...
  • 14.
    And remember, Prepared byBatyr Nuryyev for Centroida.ai