DevOps
Software Development (Dev)
& IT Operations (Ops)
DevOps course by Abdul Rahim
What is DevOps?
DevOps is a culture which promotes collaboration between
Development and Operations Team to deploy code to production
faster in an automated & repeatable way. The word 'DevOps' is a
combination of two words 'development' and 'operations.'
DevOps course by Abdul Rahim
– A set of practices intended to reduce the time between
committing a change to a system and the change being placed into
normal production, while ensuring high quality.
– DevOps can be defined as an alignment of development and IT
operations with better communication and collaboration.
– DevOps is the practice of operations and development engineers
participating together in the entire service lifecycle, from design
through the development process to production support.
DevOps Definition
DevOps course by Abdul Rahim
History of DevOps
The concept of DevOps emerged out of a discussion
between Andrew Clay and Patrick Debois in 2008. They
were concerned about the drawbacks of Agile and wanted
to come up with something better. The idea slowly began
to spread and after the DevOpsDays event held in Belgium
in 2009, it became quite a buzzword.
DevOps course by Abdul Rahim
DevOps Main Objectives
– Speed
– Rapid Delivery
– Reliability
– Scale
– Improved Collaboration
– Security
DevOps course by Abdul Rahim
Software Development Life
Cycle (SDLC)
SDLC is a process followed for a software project, within a
software organization. It consists of a detailed plan
describing how to develop, maintain, replace and alter or
enhance specific software. The life cycle defines a
methodology for improving the quality of software and the
overall development process.
DevOps course by Abdul Rahim
Waterfall Model
Requirement
Design
Implementation
Testing
Deployment
Maintenance
DevOps course by Abdul Rahim
Agile Methodology
DevOps course by Abdul Rahim
DevOps Best Practices
The following are DevOps best practices:
– Continuous Development
– Continuous Integration
– Continuous Delivery/Continuous Deployment
– Microservices
– Infrastructure as Code
– Monitoring and Logging
– Communication and Collaboration
DevOps course by Abdul Rahim
Continuous Development
– The first phase of the DevOps lifecycle is where the planning and
software coding takes place. The planning involves understanding
the vision of the project and envisioning a software based on
those perceptions.
– The code can be written in any language on an integrated
development environment (IDE), but it is maintained by using
Version Control tools. Maintaining the code is referred to as Source
Code Management (SCM).
DevOps course by Abdul Rahim
Continuous Development
IDE
Eclipse
NetBeans
MS Visual Studio
IntelliJ IDEA
Xcode IDE
Android Studio
Building
Ant
Maven
Gradle
SCM
GitHub
SVN
GitLab
Mercurial
DevOps course by Abdul Rahim
Continuous Integration
– This stage is the heart of the entire DevOps life cycle.
– Continuous integration is a software development practice where
developers regularly merge their code changes into a central
repository, after which automated builds and tests are run. The
key goals of continuous integration are to find and address bugs
quicker, improve software quality, and reduce the time it takes to
validate and release new software updates.
– Jenkins is a very popular tool used in this phase.
DevOps course by Abdul Rahim
Continuous Integration
CI Tools
TeamCity
Jenkins
Travis CI
CircleCI
Bamboo
GitLab CI
DevOps course by Abdul Rahim
Continuous
Delivery/Deployment
Continuous delivery/deployment is a software development practice
where code changes are automatically built, tested, and prepared for
a release to production. It expands upon continuous integration by
deploying all code changes to a testing environment and/or a
production environment after the build stage. When continuous
delivery is implemented properly, developers will always have a
deployment-ready build artifact that has passed through a
standardized test process.
DevOps course by Abdul Rahim
Continuous
Delivery/Deployment
CI Tools
Puppet
Chef
Ansible
SaltStack
DevOps course by Abdul Rahim
Continuous
Delivery/Deployment
DevOps course by Abdul Rahim
Microservices
– Microservices - also known as the microservice architecture - is an architectural
style that structures an application as a collection of services that are
– Highly maintainable and testable
– Loosely coupled
– Independently deployable
– Organized around business capabilities
– Owned by a small team
– The microservice architecture enables the rapid, frequent and reliable delivery
of large, complex applications. It also enables an organization to evolve its
technology stack.
DevOps course by Abdul Rahim
Microservices
DevOps course by Abdul Rahim
Microservices
PROS
– Freedom to use technology
– Responsible of single business capability
– Separate Ownership & Tracking
– Frequent Software Releases
– Parallel releases & feature requests
– No Single Point of Failure
– Each service scaled independently
– No Delay for Developers
– Can be reused
CONS
– Complex architecture
– Single functionality becomes
distributed so latency
– Difficult to trace a call and which
Microservice is taking time
– A good amount of integration/e2e
tests are required
– Data division for Microservices
– Difficult to maintain transaction safety
DevOps course by Abdul Rahim
Microservices
– 500+ Microservices
DevOps course by Abdul Rahim
Infrastructure as Code
– Infrastructure as code is a practice in which infrastructure is
provisioned and managed using code.
– Infrastructure and servers can quickly be deployed using
standardized patterns, updated with the latest patches and
versions, or duplicated in repeatable ways.
– Deploy everything in an automated way or through scripts
– Main purpose is to have state & deployment manifests in any
central place
DevOps course by Abdul Rahim
Infrastructure as Code
Tools
Terraform
Chef
Ansible
SaltStack
GitOps
DevOps course by Abdul Rahim
Monitoring and Logging
– This is a very crucial stage of the DevOps life cycle where you continuously
monitor the performance of your application.
– Continuous monitoring helps in sustaining the availability of services in the
application.
– It also determines the threats and root causes of recurring system errors.
– Security issues get resolved and problems are automatically detected and fixed.
– Compared to the software development teams, the IT operations teams are
more involved in this phase. Their role is pivotal in supervising user activity,
checking the system for unusual behavior, and tracing the presence of bugs.
DevOps course by Abdul Rahim
Monitoring and Logging
Tools
Sensu
Splunk
Nagios
NewRelic
ELK Stack
DevOps course by Abdul Rahim
Communication and
Collaboration
– The most important part of DevOps
– DevOps was introduced due to conflicts between Developers & Operations team
blaming each other
– Physically bringing together the workflows and responsibilities of development and
operations.
– Maintain visibility across organizations for various events such as deployments,
bugs, server downtimes, etc.
– Give continuous feedback to respective stakeholder
– If feature is correct and deployed, take feedback from consumer
– If issue in code, give feedback to developer
– If issue in infrastructure, communicate to teams as soon as possible
DevOps course by Abdul Rahim
Containers and Virtual
Development
– Package Software into Standardized Units for Development, Shipment and
Deployment
– Containers are a solution to the problem of how to get software to run reliably
when moved from one computing environment to another. This could be from a
developer's laptop to a test environment, from a staging environment into
production, and perhaps from a physical machine in a data center to a virtual
machine in a private or public cloud.
– Instead of virtualizing the hardware stack as with the virtual machines
approach, containers virtualize at the operating system level, with multiple
containers running atop the OS kernel directly.
DevOps course by Abdul Rahim
Containers and Virtual
Development
Containers
Docker
Vagrant
Virtual
Vmware
HyperV
Oracle VirtualBox
DevOps course by Abdul Rahim
Containers and Virtual
Development
DevOps course by Abdul Rahim
Cluster Management
(Scalability)
– Clearly, containers are an exciting new advancement in creating
and delivering applications.
– However, controlling a vast deployment of containers presents
some complications.
– Containers must be matched with resources. Failures have to be
resolved quickly.
– These challenges have led to a concurrent demand for cluster
management and orchestration tools.
DevOps course by Abdul Rahim
Cluster Management
(Scalability)
– Cluster management can vary from low-involvement activities
such as sending work to a cluster to high-involvement work such
as load-balancing and availability.
DevOps course by Abdul Rahim
Cluster Management
(Scalability)
Tools
Docker Swarm
Google Kubernetes
Apache Mesos
Fleet – Core OS
DevOps course by Abdul Rahim

Introduction to dev ops

  • 1.
    DevOps Software Development (Dev) &IT Operations (Ops) DevOps course by Abdul Rahim
  • 2.
    What is DevOps? DevOpsis a culture which promotes collaboration between Development and Operations Team to deploy code to production faster in an automated & repeatable way. The word 'DevOps' is a combination of two words 'development' and 'operations.' DevOps course by Abdul Rahim
  • 3.
    – A setof practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality. – DevOps can be defined as an alignment of development and IT operations with better communication and collaboration. – DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support. DevOps Definition DevOps course by Abdul Rahim
  • 4.
    History of DevOps Theconcept of DevOps emerged out of a discussion between Andrew Clay and Patrick Debois in 2008. They were concerned about the drawbacks of Agile and wanted to come up with something better. The idea slowly began to spread and after the DevOpsDays event held in Belgium in 2009, it became quite a buzzword. DevOps course by Abdul Rahim
  • 5.
    DevOps Main Objectives –Speed – Rapid Delivery – Reliability – Scale – Improved Collaboration – Security DevOps course by Abdul Rahim
  • 6.
    Software Development Life Cycle(SDLC) SDLC is a process followed for a software project, within a software organization. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process. DevOps course by Abdul Rahim
  • 7.
  • 8.
  • 9.
    DevOps Best Practices Thefollowing are DevOps best practices: – Continuous Development – Continuous Integration – Continuous Delivery/Continuous Deployment – Microservices – Infrastructure as Code – Monitoring and Logging – Communication and Collaboration DevOps course by Abdul Rahim
  • 10.
    Continuous Development – Thefirst phase of the DevOps lifecycle is where the planning and software coding takes place. The planning involves understanding the vision of the project and envisioning a software based on those perceptions. – The code can be written in any language on an integrated development environment (IDE), but it is maintained by using Version Control tools. Maintaining the code is referred to as Source Code Management (SCM). DevOps course by Abdul Rahim
  • 11.
    Continuous Development IDE Eclipse NetBeans MS VisualStudio IntelliJ IDEA Xcode IDE Android Studio Building Ant Maven Gradle SCM GitHub SVN GitLab Mercurial DevOps course by Abdul Rahim
  • 12.
    Continuous Integration – Thisstage is the heart of the entire DevOps life cycle. – Continuous integration is a software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run. The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates. – Jenkins is a very popular tool used in this phase. DevOps course by Abdul Rahim
  • 13.
    Continuous Integration CI Tools TeamCity Jenkins TravisCI CircleCI Bamboo GitLab CI DevOps course by Abdul Rahim
  • 14.
    Continuous Delivery/Deployment Continuous delivery/deployment isa software development practice where code changes are automatically built, tested, and prepared for a release to production. It expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage. When continuous delivery is implemented properly, developers will always have a deployment-ready build artifact that has passed through a standardized test process. DevOps course by Abdul Rahim
  • 15.
  • 16.
  • 17.
    Microservices – Microservices -also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are – Highly maintainable and testable – Loosely coupled – Independently deployable – Organized around business capabilities – Owned by a small team – The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack. DevOps course by Abdul Rahim
  • 18.
  • 19.
    Microservices PROS – Freedom touse technology – Responsible of single business capability – Separate Ownership & Tracking – Frequent Software Releases – Parallel releases & feature requests – No Single Point of Failure – Each service scaled independently – No Delay for Developers – Can be reused CONS – Complex architecture – Single functionality becomes distributed so latency – Difficult to trace a call and which Microservice is taking time – A good amount of integration/e2e tests are required – Data division for Microservices – Difficult to maintain transaction safety DevOps course by Abdul Rahim
  • 20.
  • 21.
    Infrastructure as Code –Infrastructure as code is a practice in which infrastructure is provisioned and managed using code. – Infrastructure and servers can quickly be deployed using standardized patterns, updated with the latest patches and versions, or duplicated in repeatable ways. – Deploy everything in an automated way or through scripts – Main purpose is to have state & deployment manifests in any central place DevOps course by Abdul Rahim
  • 22.
  • 23.
    Monitoring and Logging –This is a very crucial stage of the DevOps life cycle where you continuously monitor the performance of your application. – Continuous monitoring helps in sustaining the availability of services in the application. – It also determines the threats and root causes of recurring system errors. – Security issues get resolved and problems are automatically detected and fixed. – Compared to the software development teams, the IT operations teams are more involved in this phase. Their role is pivotal in supervising user activity, checking the system for unusual behavior, and tracing the presence of bugs. DevOps course by Abdul Rahim
  • 24.
  • 25.
    Communication and Collaboration – Themost important part of DevOps – DevOps was introduced due to conflicts between Developers & Operations team blaming each other – Physically bringing together the workflows and responsibilities of development and operations. – Maintain visibility across organizations for various events such as deployments, bugs, server downtimes, etc. – Give continuous feedback to respective stakeholder – If feature is correct and deployed, take feedback from consumer – If issue in code, give feedback to developer – If issue in infrastructure, communicate to teams as soon as possible DevOps course by Abdul Rahim
  • 26.
    Containers and Virtual Development –Package Software into Standardized Units for Development, Shipment and Deployment – Containers are a solution to the problem of how to get software to run reliably when moved from one computing environment to another. This could be from a developer's laptop to a test environment, from a staging environment into production, and perhaps from a physical machine in a data center to a virtual machine in a private or public cloud. – Instead of virtualizing the hardware stack as with the virtual machines approach, containers virtualize at the operating system level, with multiple containers running atop the OS kernel directly. DevOps course by Abdul Rahim
  • 27.
  • 28.
  • 29.
    Cluster Management (Scalability) – Clearly,containers are an exciting new advancement in creating and delivering applications. – However, controlling a vast deployment of containers presents some complications. – Containers must be matched with resources. Failures have to be resolved quickly. – These challenges have led to a concurrent demand for cluster management and orchestration tools. DevOps course by Abdul Rahim
  • 30.
    Cluster Management (Scalability) – Clustermanagement can vary from low-involvement activities such as sending work to a cluster to high-involvement work such as load-balancing and availability. DevOps course by Abdul Rahim
  • 31.
    Cluster Management (Scalability) Tools Docker Swarm GoogleKubernetes Apache Mesos Fleet – Core OS DevOps course by Abdul Rahim