CI/CD 101
@HazzimIO
WHAT’S CONTINUOUS INTEGRATION?
CONTINUOUS INTEGRATION
• Continuous integration (CI) is the practice of merging all developer
working copies to a shared mainline several times a day.
CONTINUOUS INTEGRATION
• Git
• Git is a free and open source distributed version control system designed to
handle everything from small to very large projects with speed and efficiency.
• Git is easy to learn and has a tiny footprint with lightning fast performance. It
outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with
features like cheap local branching, convenient staging areas, and multiple
workflows.
CONTINUOUS INTEGRATION
• Git (front ends)
• Gitlab
• Github
• Bitbucket
CONTINUOUS INTEGRATION
• Then... we have code and branches, now what?
CONTINUOUS INTEGRATION
• let's build, but… what it's a build?
CONTINUOUS INTEGRATION
• In the field of software development, the term build is similar to
that of any other field.That is, the construction of something that
has an observable and tangible result.
CONTINUOUS INTEGRATION
• Build automation is the process of automating the creation of
a software build and the associated processes
including: compiling computer source code into binary
code, packaging binary code, and running automated tests.
CONTINUOUS INTEGRATION
• Maven
• Gradle
• Ant
• Make
CONTINUOUS INTEGRATION
• ok, we did a Build and now what????
CONTINUOUS INTEGRATION
• Now we have an Artifact!!!… But WTH!? is an artifact?
CONTINUOUS INTEGRATION
• Artifacts can be used to represent data created as a side-effect of
running a build. Artifacts are files which are associated with a single
build.A build can have any number of artifacts associated with it.
CONTINUOUS INTEGRATION
• Artifactory
• Nexus
• Archiva
CONTINUOUS INTEGRATION
• But who controls and manage all of this stuff? it’s magic? DevOps
people are wizards?
CONTINUOUS INTEGRATION
• Here is were we use a continuous integration software that
supports our continuous integration process, in which developer's
changes are immediately tested and reported when they are
added to the mainline code base.
CONTINUOUS INTEGRATION
• Jenkins
• TeamCity
• TravisCI
CONTINUOUS INTEGRATION
• Our orchestrator did the build and deploy the artifact, now what?
CONTINUOUS INTEGRATION
• We can't have CI without automated testing.
CONTINUOUS INTEGRATION
• Junit
• Selenium
• Robot
• Test with custom scripts
CONTINUOUS INTEGRATION
• But where is all this automated testing executed?
CONTINUOUS INTEGRATION
• Another part of CI/CD and DevOps is "Infrastructure as code", the
capability of create and destroy servers under demand for specific
needs or testing, with the fiability everytime will we have the same
config.
CONTINUOUS INTEGRATION
• For local environments:
• Vagrant
• Docker compose*
CONTINUOUS INTEGRATION
• Public/private/Hybrid clouds:
• Terraform
• AWS Cloud formation.
CONTINUOUS INTEGRATION
• Where are that servers hosted?
CONTINUOUS INTEGRATION
• Google Cloud Platform (GCP)
• Amazon Web Services (AWS)
• OpenStack
• Rackspace
*VM’s and Containers.
CONTINUOUS INTEGRATION
• How can I manage the configuration to be the same always and
across all my environments?
CONTINUOUS INTEGRATION
• Ansible
• Puppet
• Chef
CONTINUOUS INTEGRATION
• How can we know the health of my environments and get alerts in
time?
CONTINUOUS INTEGRATION
• Zabbix
• PagerDuty
• Graphite
• Prometheus
CONTINUOUS INTEGRATION
• And log management?
CONTINUOUS INTEGRATION
• Splunk
• Papertrail
• ELK - (Elasticsearch, Logstash, and Kibana)
CONTINUOUS DELIVERY
• Continuous delivery is an extension of continuous integration to
make sure that you can release new changes to your customers
quickly in a sustainable way.
• This means that on top of having automated your testing, you also
have automated your release process and you can deploy your
application at any point of time by clicking on a button.
CONTINUOUS DELIVERY
• In theory, with continuous delivery, you can decide to release daily,
weekly, fortnightly, or whatever suits your business requirements.
However, if you truly want to get the benefits of continuous
delivery, you should deploy to production as early as possible to
make sure that you release small batches, that are easy to
troubleshoot in case of a problem.
CI/CD & DEVOPS
DEVOPS
• DevOps is a software engineering culture and practice that aims at
unifying software development (Dev) and software operation (Ops).
The main characteristic of the DevOps movement is to strongly
advocate automation and monitoring at all steps of software
construction, from integration, testing, releasing to deployment
and infrastructure management.
DEVOPS
RELATED ROLES
DEVSECOPS
• DevSecOps strives to automate core security tasks by embedding
security controls and processes into the DevOps
workflow. DevSecOps originally focused primarily on automating
code security and testing, but now it also encompasses more
operations-centric controls.
NETDEVOPS
• NetDevOps is a culture, movement, or practice that emphasizes the
collaboration and communication of both network architects and
operators while automating the process of network design and
changes. It aims at establishing a culture and environment where
building, testing, and releasing network changes can happen rapidly,
frequently, and more reliably.
SRE
• Site Reliability Engineering (SRE) is a discipline that incorporates
aspects of software engineering and applies that to IT
operations problems.The main goals are to create ultra-
scalableand highly reliable software systems.
DEVOPS
• "DevOps is never a straight line. It's a forest,And like a forest it's easy
to lose your way...To get lost...To forget where you came in.
-Hattori Hanzo - Kill Bill
Q&A
• Questions????
CONTACT
• hazzim.anaya@gmail.com
• hazzim@hazzim.io
• @HazzimIO

CI/CD (DevOps) 101