#1 What is DevOps ,Agile and CICD

Tech Tutorials with Piyush
14 Jan 202214:02

Summary

TLDRIn this educational video, Piyush Sachteva introduces Agile CI/CD and DevOps, explaining their roles in modern software development. He contrasts traditional siloed development with Agile's emphasis on collaboration and flexibility, and DevOps' integration of operations and production. The video delves into Continuous Integration (CI), Continuous Delivery (CD), and Continuous Deployment, illustrating their functions in the software lifecycle. It also highlights the benefits of these practices, such as early bug detection, cost savings, and improved team coordination. The tutorial series is aimed at Jenkins beginners, showcasing how Jenkins automates the CI/CD pipeline, from code commit to production deployment, with real-world examples and tools like Maven, Selenium, and Ansible.

Takeaways

  • ๐Ÿ˜€ Agile, CI/CD, and DevOps are modern methodologies that improve collaboration and efficiency in software development.
  • ๐Ÿ› ๏ธ Traditional software development faced issues like siloed teams, lack of transparency, and delayed changes due to management bottlenecks.
  • ๐Ÿ”„ Agile emphasizes collaboration, flexibility, and shorter development cycles through sprints and daily scrum meetings.
  • ๐Ÿค DevOps extends Agile principles into operations and production, aiming to automate and monitor the development cycle to remove bottlenecks.
  • ๐Ÿ”ง Continuous Integration (CI) involves frequent and automatic integration and testing of code changes.
  • ๐Ÿš€ Continuous Delivery (CD) ensures that code is always ready for deployment, with manual approval required before production deployment.
  • ๐ŸŒŸ Continuous Deployment automates the deployment of validated changes to production without manual intervention.
  • ๐Ÿ” Jenkins is a widely used CI/CD server that supports automation of the software development lifecycle through pipelines.
  • ๐ŸŒ CloudBees partners with the Jenkins community for development and maintenance, contributing significantly to the project.
  • ๐Ÿ”‘ The Jenkins workflow automates build, test, and deployment processes, providing continuous feedback and monitoring throughout the SDLC.

Q & A

  • What are the three modern software development methodologies introduced in the video?

    -The three modern software development methodologies introduced in the video are Agile, CI/CD, and DevOps.

  • How does the traditional software development life cycle differ from the modern approaches like Agile, CI/CD, and DevOps?

    -In the traditional software development life cycle, teams like development, QA, and operations often work in silos with limited visibility and coordination, leading to delays and bottlenecks. Modern approaches like Agile emphasize collaboration and flexibility, CI/CD focuses on frequent integration and automated testing, and DevOps integrates development and operations for continuous improvement and faster deployment.

  • What are the key issues with the traditional software development life cycle as described in the video?

    -The key issues with the traditional software development life cycle include time-consuming processes, lack of coordination between teams, lack of transparency, management bottlenecks, and the overall cumbersome nature of the process.

  • What does the term 'Agile' refer to in the context of software development?

    -In the context of software development, 'Agile' refers to a methodology that emphasizes collaboration, flexibility, and shorter development cycles. It involves planning and completing work in sprints with frequent meetings and adapts to changes more readily.

  • What is the difference between Continuous Integration (CI) and Continuous Delivery (CD)?

    -Continuous Integration (CI) involves frequent and automatic integration of code, where new and modified code is automatically tested with the master code. Continuous Delivery (CD) is an extension of CI, ensuring that code is always ready to be deployed, although manual approval is required before the software is deployed to production.

  • How does Continuous Deployment differ from Continuous Delivery?

    -Continuous Deployment automatically deploys all validated changes to the production environment without any manual intervention, whereas Continuous Delivery still requires manual approval before deploying the code to production.

  • What role does Jenkins play in the CI/CD process as described in the video?

    -Jenkins plays a central role in the CI/CD process by automating the building, testing, and deployment of code. It triggers builds, runs tests, reports results, and can automate the deployment process using pipelines.

  • What is the significance of CloudBees' relationship with the Jenkins community as mentioned in the video?

    -CloudBees partners with the Jenkins community for development and maintenance tasks, contributing significantly to the project. They coordinate with the community on releases and contribute fixes back, which helps in the advancement and support of the Jenkins tool.

  • How does the video describe the process of a feature development in a Jenkins workflow?

    -The video describes the process of feature development in a Jenkins workflow as starting with multiple developers committing code to a version control system, then merging to a deployment branch. Jenkins triggers a build and runs tests, reports results, and if tests pass, the build is scanned for vulnerabilities and static code analysis. The build is then uploaded to a repository and deployed to lower environments, eventually reaching production either through continuous deployment or with manual approval in continuous delivery.

  • What are the benefits of implementing CI/CD as highlighted in the video?

    -The benefits of implementing CI/CD include early detection of bugs and problems, cost and effort savings, improved coordination between teams, faster releases, automated testing for quality assurance, and reduced chances of manual errors due to automation.

Outlines

00:00

๐Ÿš€ Introduction to Agile, CI/CD, and DevOps

Piyush Sachteva introduces the concepts of Agile, CI/CD, and DevOps, explaining their relevance in modern software development. The video aims to clarify the differences between these terms and their application in the software development lifecycle. Traditional development workflows are critiqued for their siloed nature and inefficiencies, highlighting the need for more collaborative and flexible methodologies. The video is part of a Jenkins tutorial series aimed at beginners, encouraging viewers to subscribe for updates and engage with the content.

05:03

๐Ÿ”„ The Evolution to Modern Development Practices

This section delves into the evolution from traditional to modern development practices, emphasizing Agile's role in fostering collaboration and flexibility. DevOps is introduced as an extension of Agile, focusing on the integration of development and operations through automation and monitoring. Continuous Integration (CI) and Continuous Delivery/Deployment (CD) are explained, detailing their processes and the distinction between delivery (which requires manual approval for production deployment) and deployment (which is fully automated). The benefits of CI/CD, such as early bug detection, cost savings, improved team coordination, and reduced manual errors, are highlighted.

10:04

๐Ÿ› ๏ธ Jenkins in CI/CD and Its Workflow

The final paragraph discusses Jenkins, a widely used CI/CD server, and its origins as the Hudson project. It explains the contributions of CloudBees to Jenkins' development and maintenance, and how Jenkins integrates with the Jenkins community. The Jenkins workflow is outlined, starting from code commits and pull requests to build triggering, testing, vulnerability scanning, and deployment across various environments. The paragraph concludes with an overview of how Jenkins pipelines automate the entire software development lifecycle, emphasizing continuous feedback and monitoring throughout the process.

Mindmap

Keywords

๐Ÿ’กAgile

Agile is a project management and product development approach that emphasizes flexibility, collaboration, and iterative progress. In the video, Agile is introduced as a modern development philosophy that contrasts with traditional, siloed software development processes. It is used to illustrate how teams can work together more effectively, with frequent planning and evolution, as opposed to rigid, long-term planning. The script mentions that Agile development is concerned with the development phase and is part of a broader set of practices that include Continuous Integration and Continuous Deployment.

๐Ÿ’กCI/CD

CI/CD stands for Continuous Integration and Continuous Delivery/Deployment. It is a software development practice where developers frequently merge their code changes into a central repository, which then undergoes automated testing and deployment. The video explains CI/CD as a set of practices that help detect bugs early, improve team coordination, and automate the delivery of high-quality software. CI/CD is central to the video's theme, as it is presented as a solution to the inefficiencies of traditional development life cycles.

๐Ÿ’กDevOps

DevOps is a cultural shift and a set of practices that automates and integrates the processes between software development (Dev) and IT operations (Ops). The video describes DevOps as an extension of Agile philosophy into operations and production, aiming to remove bottlenecks and bring teams together under one umbrella. It emphasizes the importance of collaboration and automation in the software development lifecycle, which is a key message of the video.

๐Ÿ’กTraditional Software Development Lifecycle

The Traditional Software Development Lifecycle refers to the sequential and linear approach to building and delivering software, where different teams work in isolation and hand off their work to the next team. The video contrasts this with Agile, CI/CD, and DevOps practices, highlighting the issues such as lack of transparency, delays, and inefficiencies in the traditional model. This term is used to set the stage for the introduction of modern development philosophies.

๐Ÿ’กContinuous Integration (CI)

Continuous Integration is the practice of merging all developers' working copies to a shared mainline several times a day. In the video, CI is described as the first step in the CI/CD pipeline, where new and modified code is automatically tested with the master code. It is portrayed as a way to catch bugs early and ensure code quality, which is crucial for the efficiency and effectiveness of the development process.

๐Ÿ’กContinuous Delivery

Continuous Delivery is the capability to release software to production at any time because the code is always in a releasable state. The video explains that Continuous Delivery extends CI by ensuring that code is always ready to be deployed, although manual approval is required before actual deployment to production. It is presented as a way to streamline the software release process and reduce the risk of bugs in production.

๐Ÿ’กContinuous Deployment

Continuous Deployment is the practice of automatically deploying all code commits to production after the code passes through the automated testing phase. The video distinguishes Continuous Deployment from Continuous Delivery by emphasizing that there is no manual intervention in the deployment process. It is positioned as the ultimate goal of a mature CI/CD pipeline, where every change is automatically released to the users.

๐Ÿ’กJenkins

Jenkins is an open-source automation server that helps automate parts of the software development process with continuous integration and facilitating technical aspects of continuous delivery. The video introduces Jenkins as a widely used CI/CD server and explains its role in automating the build, test, and deployment processes. Jenkins is central to the video's practical demonstration of how CI/CD can be implemented in a software development environment.

๐Ÿ’กCloudBees

CloudBees is a company that partners with the Jenkins community for development and maintenance tasks. The video mentions CloudBees as a significant contributor to the Jenkins project, highlighting the collaboration between the company and the Jenkins community. This keyword is used to illustrate the ecosystem around Jenkins and how it supports the development and maintenance of the tool.

๐Ÿ’กPull Request

A Pull Request is a feature in version control systems that allows developers to request that their changes be merged into a central repository. In the video, Pull Requests are mentioned as part of the process where developers commit code to a version control system and request that it be merged into the deployment branch. This is an example of how collaboration and code review are facilitated in modern development practices.

Highlights

Introduction to Agile CI/CD and DevOps concepts.

Differences between Agile, CI/CD, and DevOps in modern software development.

Traditional software development life cycle issues.

Problems with siloed teams and lack of visibility in traditional workflows.

The need for modern deployment and development philosophies.

Agile development emphasizes collaboration and flexibility.

DevOps extends Agile philosophy into operations and production.

Continuous Integration (CI) and its role in software development.

Continuous Delivery (CD) ensures code is always ready for deployment.

Continuous Deployment automates the deployment process.

The importance of collaboration in implementing Continuous Delivery.

Benefits of CI/CD in early detection of bugs and cost savings.

How Jenkins is used in the CI/CD process.

The relationship between CloudBees and the Jenkins community.

Jenkins workflow from code commit to production deployment.

The role of Jenkins Pipeline in automating the CI/CD process.

Continuous feedback and monitoring in the software development lifecycle.

Encouragement for viewers to subscribe and engage with the channel.

Transcripts

play00:03

[Music]

play00:09

hi everyone my name is piyush sachteva

play00:12

and in this video i'll introduce you to

play00:15

the concept of agile ci cd and devops

play00:18

what are those and what are the

play00:19

differences between these these three

play00:21

terms

play00:22

and how they are used in the

play00:25

modern software development life cycle

play00:27

if you are new to my channel please hit

play00:29

the subscribe button below to get

play00:31

notified about all my upcoming videos

play00:34

and give this video a thumbs up if you

play00:36

think this was relevant to you and you

play00:38

learn something out of it again this

play00:40

video is part of the series jenkins

play00:43

tutorials for the beginners

play00:45

so please watch all the videos that i

play00:47

will be publishing from time to time it

play00:49

will be really helpful for you if you

play00:51

are new to jenkins

play00:55

before we deep dive into ci cd and

play00:57

modern development philosophies let's

play00:59

have a look at the traditional software

play01:01

development life cycle and what were the

play01:03

issues with it let's say we have

play01:05

multiple teams working in a project such

play01:07

as developer operations team

play01:10

quality assurance team or testing team

play01:13

and then we have a production support

play01:14

team which usually work on the

play01:16

production environments there could be

play01:18

much more multiple developers commit the

play01:20

code to a version control system

play01:23

once the code is committed and approved

play01:25

someone from ops team would then create

play01:27

a build using the code base that was

play01:29

committed

play01:31

bill is then placed to a shared folder

play01:33

or a network drive or on an environment

play01:36

the ops team would then deploy the bill

play01:38

to a lower environment such as quality

play01:40

assurance after transferring the build

play01:43

to that environment

play01:46

testing team is that

play01:49

notified and they start executing their

play01:51

test cases against the build reports are

play01:54

then provided to the developers and

play01:56

other stakeholders about the test cases

play01:59

developers would then fixes the bugs and

play02:01

defects that commit the code again and

play02:03

this process will continue for other

play02:05

environments such as set performance

play02:07

test environment there could be hundreds

play02:10

of more environment

play02:12

once the change management approved the

play02:14

changes someone from production support

play02:16

will then deploy the build to the

play02:18

production environment

play02:20

after transferring the build from other

play02:22

environment that was already been tested

play02:27

let's have a look at the problems with

play02:28

the traditional software development

play02:30

lifecycle workflow

play02:32

so in older days dev qa's operation team

play02:36

plot support these teams were often

play02:38

siloed and work independently and have

play02:40

no visibility in what's going on with

play02:42

other team even though they were working

play02:44

on the same project

play02:47

a large group of developers coded for

play02:49

months

play02:50

and they handed the completed code to

play02:52

quality assurance for testing

play02:55

quality assurance then run tests and

play02:58

handed bugs back to the developer for

play03:01

quick fix

play03:02

then developer fixed the box and handed

play03:05

code back to the quality assurance

play03:07

reruns the test

play03:09

quality assurance then handed the tested

play03:11

code to packaging or deployment team or

play03:14

broad support team for deployment into

play03:16

the production

play03:18

and then they release the complete

play03:20

product all at once and if there are any

play03:23

bugs or defects in the production system

play03:25

then they have to go and do the process

play03:28

all over again so it's a bit tedious and

play03:32

cumbersome and there were a lot of

play03:34

issues involved with this approach

play03:36

so let's see what all

play03:38

those issues are

play03:40

so first one this is really a time

play03:42

consuming process to deliver all product

play03:44

at once

play03:47

then it is unproductive

play03:51

changes and releases to the production

play03:53

system are costly and

play03:56

because there is no coordination between

play03:59

different teams therefore there is a

play04:01

lack of transparency developers don't

play04:04

know what's going on in production and

play04:06

broad support team don't know what all

play04:08

the features are upcoming

play04:13

and then there are a lot of management

play04:14

bottlenecks so changes are delayed or

play04:17

even rejected at the very last moment

play04:19

and all the teams have no visibility and

play04:22

what's going on with that

play04:25

and this is just the tip of the iceberg

play04:27

there are a lot more issues involved

play04:29

with the traditional workflow that is

play04:31

why there was a need to change this into

play04:34

some modern deployment and development

play04:36

philosophies

play04:38

then agile continuous integration and

play04:40

development it all comes into the

play04:42

picture so modern development

play04:44

philosophies they works

play04:46

and emphasis mainly on collaboration

play04:48

between different teams and individuals

play04:51

it emphasizes on flexibility in planning

play04:54

and development rather than just

play04:55

executing the tasks

play04:59

and it emphasis on shorter depth cycles

play05:03

agile mainly concerns

play05:05

adapting planning and evolutionaries the

play05:08

development work work is planned and

play05:10

completed in sprints this is usually one

play05:13

or two weeks of work

play05:15

with the frequent usually daily scrum

play05:18

meetings where all team members report

play05:20

progress and plan their next step

play05:23

in these meetings blockers are also

play05:25

reported so that it can be removed or

play05:28

necessary action can be taken in advance

play05:33

devops extend the agile philosophy into

play05:35

operations and production by

play05:37

implementing the automation monitoring

play05:40

and feedback of all the steps in the

play05:42

development cycle

play05:44

sometimes devops is considered as a

play05:47

usage of tools to automate

play05:49

different tasks in the cicd process

play05:52

however devops is

play05:54

merely a cultural change

play05:56

which brings all the teams together

play05:58

under one single umbrella

play06:00

and to remove all the bottlenecks that

play06:03

were there as part of the

play06:05

previous deployment methodologies

play06:09

then we have a term which is also used

play06:12

very frequently which is continuous so

play06:15

continuous implements agile and devops

play06:17

philosophy with the help of tools

play06:20

that standardize the steps in the

play06:22

process and thoroughly test each code

play06:25

modification before it is integrated

play06:27

into the official source code

play06:33

let's see what are you know these terms

play06:36

in detail

play06:38

so let's say we have a process

play06:41

software development lifecycle process

play06:43

which usually involves these steps like

play06:45

code commit build integrate test

play06:48

release

play06:50

deploy

play06:51

operate this is a complete sdlc

play06:54

lifecycle nowadays that we see

play06:56

and

play06:58

continuous feedback at all the stages

play07:00

were provided from each of the stage

play07:04

then

play07:05

if we see the code commit and build part

play07:08

so this is where agile operates agile

play07:11

development is mainly concerned with the

play07:13

development it does not have any say in

play07:16

operationalizing or testing or releases

play07:20

to the production

play07:21

so agile is just for the development

play07:25

then we have

play07:27

ci which is continuous integration it

play07:29

goes from code commit till testing and

play07:32

integration

play07:34

then we have cd which is continuous

play07:37

delivery continuous delivery is delivery

play07:39

of code from

play07:43

from the developer

play07:44

till the production

play07:46

however it requires a gate before the

play07:49

production deployment usually a manual

play07:51

approval is required before the

play07:53

production

play07:54

and once it is approved only then

play07:57

deployment to the production is

play07:58

triggered

play07:59

however we have another important term

play08:02

which is continuous

play08:04

deployment

play08:05

continuous deployment is deploying the

play08:07

code

play08:08

deploying the feature till the

play08:10

production environment without any

play08:12

manual intervention

play08:13

so understand the difference between

play08:15

continuous delivery and deployment

play08:17

delivery involves manual approval before

play08:20

the production deployment however

play08:22

continuous deployment is automated at

play08:24

every step

play08:28

let's have a look at the difference

play08:29

between ci cd and continuous deployment

play08:33

so ci is frequent and automatic

play08:35

integration of code

play08:38

all the new and modified code is

play08:40

automatically tested with the master

play08:42

code

play08:43

continuous delivery is an extension of

play08:46

ci it ensures that code is always ready

play08:49

to be deployed although manual approval

play08:52

is required to actually deploy the

play08:54

software to production

play08:56

however continuous deployment

play08:58

automatically deploys all validated

play09:00

changes to production frequent feedback

play09:03

enables issues to be found and fixed

play09:05

quickly

play09:07

so to successfully implement continuous

play09:09

delivery it is essential to have a

play09:11

collaborative working relationship with

play09:13

everyone involved you can then use

play09:15

delivery pipelines which are automatic

play09:17

implementation of your products life

play09:19

cycle

play09:21

right now we know what exactly is ci cd

play09:24

let's have a look why actually we need

play09:26

it

play09:28

to detect bugs and problems in the early

play09:30

stages of sdlc

play09:33

it saves a lot of cost and efforts it

play09:36

improves the coordination between

play09:37

different teams hence innovative ideas

play09:40

thrive

play09:41

faster releases to the production system

play09:45

automated testing helps deliver a

play09:47

top-notch quality product

play09:50

minimum human intervention hence there

play09:52

are less chances of manual errors

play09:54

because everything is automated

play09:57

let's have a look at cloudbees and

play09:59

jenkins community for this jenkins what

play10:02

is cloud-based how they are related with

play10:03

each other

play10:05

so jenkins is most widely used

play10:08

ci cd server

play10:11

kosuke kawaguchi one of the founders of

play10:14

cloudbees

play10:15

created this tool in 2006

play10:18

as the hudson project and then in 2011

play10:22

it was renamed as jenkins

play10:25

jenkins is maintained and supported by

play10:27

an independent and active community

play10:29

which is

play10:30

jenkins dot io

play10:32

and they welcomes new contributor of for

play10:34

all technical and experience level

play10:38

cloud base partners with jenkins

play10:40

community for development and

play10:41

maintenance tasks

play10:43

and cloud-based engineer they contribute

play10:46

significantly to the junkies project and

play10:48

they coordinate with the community on

play10:50

releases and contribute

play10:52

fixes back to the community

play10:55

we'll now have a look at the jenkins

play10:57

workflow let's say you have multiple

play11:00

developers working on a feature

play11:02

they would commit the code to a version

play11:04

control system

play11:06

on their feature branch using a pull

play11:08

request

play11:09

code will then be merged to the

play11:11

deployment branch once it is approved

play11:14

as soon as the code is merged jenkins

play11:17

would trigger a build with the help of a

play11:19

webhook using tools such as maven

play11:23

gradle

play11:25

npm once the build is created

play11:28

successfully it would trigger the test

play11:30

cases using the tools such as

play11:32

selenium

play11:34

junit

play11:35

and then it reports the test cases

play11:38

to the developer and stakeholders and it

play11:40

will be uploaded to a repository for

play11:43

archiving an analytics purpose if the

play11:45

test cases are passed then the build

play11:48

will be scanned for vulnerability and

play11:49

static code analysis using tools such as

play11:53

black duck

play11:54

sonar cube once the previous stages are

play11:57

successful it will upload the build to a

play11:59

build repository

play12:01

such as

play12:02

nexus

play12:03

jfrog artifactory

play12:05

this complete process from build test

play12:07

scan integration is commonly referred to

play12:10

as continuous integration or ci

play12:12

the build is then transferred to a lower

play12:14

environment such as dev for the

play12:16

deployment using tools such as ansible

play12:19

helm for kubernetes related deployments

play12:23

once it is approved and tested in dev it

play12:26

would then be deployed in a pre-prod or

play12:29

a uat environment

play12:31

once it is approved and testing in uat

play12:35

it is then ready for the deployment in

play12:37

production the process of deploying all

play12:40

the validated changes onto the

play12:42

production environment

play12:44

is called continuous deployment

play12:46

however continuous delivery ensures that

play12:49

manual approval is required before

play12:51

delivering the code to production

play12:54

cd also involves continuous

play12:56

feedback and monitoring at all the

play12:59

stages

play13:00

of the software development lifecycle

play13:02

and this complete process can be

play13:04

automated using jenkins pipeline

play13:07

pipeline is actually a glue which holds

play13:10

all the tools and steps together in a

play13:14

process

play13:15

this is an ongoing and continuous

play13:18

process so once one feature is completed

play13:20

team will start working on the next

play13:22

feature and they will work it parallely

play13:24

as well

play13:29

i hope this video was somewhat

play13:30

beneficial to you and you have learned

play13:32

something out of it if you did please

play13:34

give us a thumbs up below it would make

play13:36

a huge difference for us if you are new

play13:39

to my channel i request you to subscribe

play13:41

it by hitting the subscribe button below

play13:43

and click on the bell icon to get

play13:45

notified about all my upcoming videos

play13:48

if you have a question

play13:50

related to this video then please let me

play13:53

know at the comment section below and

play13:55

i'll be more than happy to help you out

play13:58

thank you very much and i'll see you

play13:59

soon with the next video

Rate This
โ˜…
โ˜…
โ˜…
โ˜…
โ˜…

5.0 / 5 (0 votes)

Related Tags
AgileCI/CDDevOpsSoftware DevelopmentJenkinsAutomationTestingDeploymentWorkflowCloudBees