📺 Develpreneur YouTube Episode

Video + transcript

Dev Ops Overview - Part 2

2022-03-29 •Youtube

Detailed Notes

DevOps is a hot topic in recent years.  However, it is often misunderstood or ill-defined.  This presentation tries to correct that.  We look at its short history and how DevOps is used.  Likewise, we look at the pros and cons involved when your team embraces this facet of software development.

DevOps Is a Steadily Growing Area While a young way to look at a part of the software development process, it is still rapidly growing.  The tools available to assist in this area grow daily.  Also, the growth of the Cloud and systems deployed there make DevOps more and more a necessity for developing modern solutions.

Transcript Text
[Music]
so we want to automate our builds
because more or less because we can but
also because we need to
because we're talking about just a large
number of environments it's
manual is too
error prone
devops is going to give us this
continuous integration appointment
it is very much a
uh goes hand in glove with
infrastructure as code
it's like i said earlier you don't build
you don't have you can't build a
physical server with code but when you
get into the cloud when you talk about
virtual machines and virtual resources
you very much can
and if you've ever spent much time
getting going a little bit into
the azure or amazon web services or
google you'll see that that's a lot of
what is there is how to script out
creating all of those different services
which is perfect when you want to be
able to
do so and replicate an environment you
see this in and we've it's been around
for a while even without the cloud when
you've had
containers uh docker is another you know
classic
script the whole thing out you can
script out a vm all the different
software you want to put on it and then
you're you're off and running so instead
of saying
to a new developer
here's all these different things i need
you to install and you got to try to
make sure they all work instead you just
give them a docker script and say here
you go run this
it's going to spin up a vm and you can
go do what you need to with it
with this with the infrastructures of
code and build automation there's also a
configuration management piece to this
because we've you know touched on the
idea of development and staging and
testing and production environments
those are going to be configured
differently maybe for a number of users
maybe for security purposes maybe the
different
data sets or resource
sources and targets
and so each of these there is a
configuration of those that goes on as
opposed to
building something like the whole
infrastructure's code
we're not having to build that whole
script but we do have to send certain
parameters with
into that code when that environment is
built
that is your configuration management
side
and this again falls under the
the dev ops
auspices
orchestration
is
in the same vein as um
really the infrastructure code and that
and this is
making sure that all of these things
work together properly
that we are
spinning up and and turning down turning
off situations and resources as needed
that we are
integrating them as needed that we are
making sure that the steps that need to
be automated are automated properly so
it's things like you know on a code
commit
do i kick off a bill or do i kick off a
test or do i kick off a
a code review alert or something like
that
and then of course operations
like the
grandfather of operations was just
monitoring stuff
are the systems up are they not are they
working completely are they sort of
working are there issues with them
um performance it you know is it
responding in the time it needs to is it
a little slow today
things like that
that still falls into the world of of
devops
because once we get all this stuff out
we want to make sure that
we're keeping an eye on whether or not
it
it works whether it's up and functional
or not because that's sometimes what we
run into is that you've got a
because now
devops is supporting everybody so it's
not just production where you've got a
production server down and people are
you know crying and screaming and saying
hey i can't get to the server
you may now also have it with your qa
people or your developers or anybody
like that
so you want to add you want to have some
monitoring
tools or scripts or
processes out there to make sure that
you're keeping an eye on what
you know what is it that
is up what is this functional what is
it's not
and hopefully you're ahead of the game
so if something goes down you can notify
that
the group or groups that are impacted by
it
so
getting better oh i don't know why i
have
okay i had a couple of slides that i
need to yank back out
um
[Music]
sometimes
you do such things
so let's go back to
so let's talk about the
usage of devops
in various methodologies
how does this fit in because
we've touched on a little bit but it
it's worth it to spend a little time
thinking through them
so i'm going to take this a little out
of order so let's look at waterfall
first in the world of waterfall
methodology
if you don't remember you you have these
steps that are taken in order and you
don't take a next step until the prior
steps completed so you
you gather requirements and then when
you're done gathering requirements and
documenting those you put together
design and when you're done with the
design and have that documented you go
into implementation when your
implementation is done and you go over
to testing when testing is done you go
to deployment
the dev ops
world is not
it it pushes against
waterfall methodology
because devops wants all of those things
to be much more fluid and not such hard
steps along the way
if you think of with waterfall they sort
of think the reverse would be like a
stairway you take a step and you you
know where you can't go back you step up
okay now you got to step up to the next
one you can't step back down
and that's you know sort of the hard and
fast rule of waterfall
and with that it doesn't necessarily
make sense to have the continuous
integration and appointment because
you're not
you don't really have the
the visibility from the later steps like
when you're in implementation you can
code and you can deploy but it doesn't
really help the testers because they're
not even involved yet because
the coding's not done
so devops does push
well it can work with waterfall
because you still have
more or less
in most cases you're going to have
development environments that you could
orchestrate and make sure that those are
kept in sync particularly when you get
large development teams so that all the
developers have access to what they need
to see the system as it's being built
even if they're not testing it
officially there's some level of that
that goes on
plus
uh integration type
steps and work that needs to be done
that is much more
it's much more feasible to do that when
you've got environments
that are
similar or ideally the same
and you can compare those and you can
have access to all the different pieces
of the system
that sometimes you don't have as a
developer in particular waterfall you
may be working on one section of code
and you never really have an opportunity
to see how that integrates with others
because there is no
platform where those things can be built
together and actually the integration
tested
so it can
well devops can be
it can great against some of the
waterfall methodology it can also
improve waterfall within each of those
steps with each of those silos
and make things a little
a little more stable but also just i
guess get ahead of the game a little bit
so that you're more confident coming out
of your step particularly implementation
side you're much more confident that
what you built and what you did
is correct and
will pass testing as opposed to i don't
know wrote a bunch of code think it
works we'll see what happens when you
start integrating it
so devops
although it may feel very different or
not
it may feel completely foreign actually
i guess with waterfall but it's not it
can work with that
agile
is
again it's going to push agile to be
more agile
when you think about the idea of scrum
and sprints within agile you have these
you know one two three week four week
whatever it is sprints and at the end of
those you do a bill you bring everything
together you test it you build it you
deploy
devops says we can do that more often
than that we don't have to wait every
week two weeks three weeks whatever we
don't have to wait till the end of a
sprint we can do daily builds so we can
have
a
an insight into how this is all going to
flush out at the end of the sprint
sooner
very much like
how it
can improve waterfall and give us more
visibility into what we're doing and
what we're producing
devops does that in the agile world it
may make things like
deployments at the end of a sprint
almost like that's a no-brainer because
if if you've got ci cd already built
into it you've got daily builds daily
deployments
and the only difference is at the end of
the sprint maybe you tell maybe you open
it up to some different people
to see that that was
deployed other than that you basically
have been deploying daily all along the
way and so it doesn't
in that sense doesn't cost you more time
or resources to do a build at the end of
the sprint because that stuff's already
been absorbed and is automated and ready
to go
you may have heard of site reliability
or sre
this is
it's really
it's more about reliability and
stability within systems uh it's very
much a google
concept something that came out of the
world of google
and
it is
while it started back in the 2000s
before devops was
really coined
there are a lot of similarities uh and a
lot of areas where sre and
devops worked are basically the same the
difference is
devops is focused on
the entire life cycle
sre is really more about us being able
to have a an environment like it doesn't
have to be production it could be a test
environment but having an environment
that is reliable that is reproducible
that is scalable
so we have
some of these things we will have
infrastructures code that way if we have
a server that goes down in our
environment we can have a monitoring
remember that's another one of the
pieces there's something monitoring it
sees that that server is going down or
maybe is about to go down
and can spin up another server in its
place
and get us closer to the you know five
or six nines of reliability or maybe
maybe 100 availability because
we can always see what's going on and
spin up another server and we're off and
running
so devops works very well
in the uh the sre world
sysops
now sysops is
really
more where like site reliability is
about keeping an environment
up reliable scalable stable
sysops is
system operations is this is like the op
side really of the devops side so it's
more about monitoring
and
responding to
issues with
an environment typically production
and again
while sysops
does a lot of typically has sort of a
manual kind of stuff you know there may
be some automated
monitoring but it's
much more
human intervention is involved to spin
up a system to bring one down to
redirect things
to note that there's errors occurring
things like that
devops makes sysops work better
it takes a lot of the human interaction
and possibility for
human error out of the equation so now
we've got things that are much more
automated that are
um communicating
in code as opposed to people having to
communicate with each other so you have
all these processes you have this really
this infrastructure around your platform
that allows you to be confident that
it's up that it's not
when it goes down usually to put
something you know
replace that piece sooner
rather than later
and then
regardless of the methodology you use
devops can be
an add-on
when you think particularly about some
of the
back up a little bit here when you think
particularly about a couple of these
things build automation
ci cd infrastructures code
even configuration management but
particularly those first three
even if you have your own little
standalone development environment
there is value in being able to rebuild
that quickly to know what it is to be
able to share that with somebody else
you know infrastructures or code um that
you can whatever your
approach is whatever methodology you're
working in
dev ops is something that is
is worth considering it is something
that can make you better
at doing
that thing whatever your methodology
happens to be so particularly when
you're thinking about waterfall and
agile
rapid application development if you do
like a rad approach that is
again a perfect way
uh a perfect fit for devops for that ci
cd so that we can
put something in front of users we can
make some changes and we can turn that
around quickly and say okay this is you
know does this work or
given this now what changes are needed
so there's a
a lot of ways that devops can fit into
our world
so let's look at some of the pros and
cons the benefits and the concerns that
we may have because they're not
they're not necessarily pros and cons
because it's not
really whether you can use it or not
it's more about this is what it provides
us and here's some things we need to
watch out for
you
Transcript Segments
0.48

[Music]

26.64

so we want to automate our builds

28.96

because more or less because we can but

31.119

also because we need to

32.8

because we're talking about just a large

34.16

number of environments it's

35.92

manual is too

37.36

error prone

39.76

devops is going to give us this

41.44

continuous integration appointment

44.079

it is very much a

47.12

uh goes hand in glove with

49.44

infrastructure as code

52

it's like i said earlier you don't build

55.12

you don't have you can't build a

56.48

physical server with code but when you

58.64

get into the cloud when you talk about

60.16

virtual machines and virtual resources

62

you very much can

63.84

and if you've ever spent much time

65.119

getting going a little bit into

67.92

the azure or amazon web services or

71.92

google you'll see that that's a lot of

74.4

what is there is how to script out

77.439

creating all of those different services

80.32

which is perfect when you want to be

82.159

able to

83.68

do so and replicate an environment you

85.759

see this in and we've it's been around

87.439

for a while even without the cloud when

89.6

you've had

91.439

containers uh docker is another you know

93.92

classic

95.2

script the whole thing out you can

96.4

script out a vm all the different

97.92

software you want to put on it and then

100.479

you're you're off and running so instead

102.64

of saying

104.159

to a new developer

105.92

here's all these different things i need

107.52

you to install and you got to try to

108.88

make sure they all work instead you just

110.56

give them a docker script and say here

112

you go run this

113.36

it's going to spin up a vm and you can

114.96

go do what you need to with it

118.799

with this with the infrastructures of

121.119

code and build automation there's also a

122.96

configuration management piece to this

126

because we've you know touched on the

127.68

idea of development and staging and

130.08

testing and production environments

132.48

those are going to be configured

133.44

differently maybe for a number of users

135.44

maybe for security purposes maybe the

137.76

different

138.64

data sets or resource

141.92

sources and targets

144.08

and so each of these there is a

146.48

configuration of those that goes on as

148.8

opposed to

150.4

building something like the whole

152.239

infrastructure's code

153.92

we're not having to build that whole

155.04

script but we do have to send certain

157.12

parameters with

158.56

into that code when that environment is

160.48

built

161.76

that is your configuration management

163.599

side

165.04

and this again falls under the

167.36

the dev ops

168.84

auspices

170.64

orchestration

172.48

is

174.48

in the same vein as um

177.76

really the infrastructure code and that

179.44

and this is

180.72

making sure that all of these things

182.56

work together properly

184.64

that we are

186.959

spinning up and and turning down turning

189.519

off situations and resources as needed

193.04

that we are

194.64

integrating them as needed that we are

196.159

making sure that the steps that need to

198.879

be automated are automated properly so

200.879

it's things like you know on a code

202.4

commit

203.36

do i kick off a bill or do i kick off a

205.76

test or do i kick off a

207.92

a code review alert or something like

209.599

that

211.2

and then of course operations

213.12

like the

214.4

grandfather of operations was just

216.48

monitoring stuff

218

are the systems up are they not are they

220.64

working completely are they sort of

222.239

working are there issues with them

224.879

um performance it you know is it

226.64

responding in the time it needs to is it

228.48

a little slow today

230

things like that

232.159

that still falls into the world of of

234.56

devops

235.68

because once we get all this stuff out

237.12

we want to make sure that

238.72

we're keeping an eye on whether or not

240.239

it

241.04

it works whether it's up and functional

243.519

or not because that's sometimes what we

245.599

run into is that you've got a

248.239

because now

249.28

devops is supporting everybody so it's

251.28

not just production where you've got a

253.12

production server down and people are

255.2

you know crying and screaming and saying

256.479

hey i can't get to the server

258.479

you may now also have it with your qa

260.639

people or your developers or anybody

262.56

like that

264.32

so you want to add you want to have some

266.84

monitoring

268.4

tools or scripts or

270.88

processes out there to make sure that

273.04

you're keeping an eye on what

275.12

you know what is it that

277.44

is up what is this functional what is

279.44

it's not

280.479

and hopefully you're ahead of the game

282.639

so if something goes down you can notify

285.36

that

286.32

the group or groups that are impacted by

289.28

it

295.759

so

296.72

getting better oh i don't know why i

299.52

have

300.8

okay i had a couple of slides that i

302.72

need to yank back out

304.639

um

305.13

[Music]

306.88

sometimes

311.28

you do such things

313.919

so let's go back to

317.68

so let's talk about the

319.28

usage of devops

321.6

in various methodologies

324.88

how does this fit in because

327.28

we've touched on a little bit but it

329.36

it's worth it to spend a little time

331.199

thinking through them

333.68

so i'm going to take this a little out

335.12

of order so let's look at waterfall

336.72

first in the world of waterfall

340.16

methodology

342.479

if you don't remember you you have these

344.72

steps that are taken in order and you

346.479

don't take a next step until the prior

348

steps completed so you

350.08

you gather requirements and then when

351.84

you're done gathering requirements and

353.28

documenting those you put together

354.96

design and when you're done with the

356.08

design and have that documented you go

357.6

into implementation when your

358.8

implementation is done and you go over

360.479

to testing when testing is done you go

362.319

to deployment

365.28

the dev ops

368

world is not

371.68

it it pushes against

374.319

waterfall methodology

377.12

because devops wants all of those things

380.639

to be much more fluid and not such hard

384.319

steps along the way

386.24

if you think of with waterfall they sort

388.56

of think the reverse would be like a

390.08

stairway you take a step and you you

392.319

know where you can't go back you step up

394.96

okay now you got to step up to the next

396.4

one you can't step back down

399.28

and that's you know sort of the hard and

401.84

fast rule of waterfall

404.56

and with that it doesn't necessarily

406.4

make sense to have the continuous

408.639

integration and appointment because

410.8

you're not

412.88

you don't really have the

414.96

the visibility from the later steps like

417.84

when you're in implementation you can

419.36

code and you can deploy but it doesn't

421.039

really help the testers because they're

422.319

not even involved yet because

424.4

the coding's not done

426.8

so devops does push

428.88

well it can work with waterfall

431.039

because you still have

433.919

more or less

435.36

in most cases you're going to have

436.72

development environments that you could

438.88

orchestrate and make sure that those are

441.919

kept in sync particularly when you get

443.919

large development teams so that all the

446.08

developers have access to what they need

448.319

to see the system as it's being built

451.12

even if they're not testing it

452.479

officially there's some level of that

454.88

that goes on

456.08

plus

457.28

uh integration type

459.12

steps and work that needs to be done

460.96

that is much more

462.8

it's much more feasible to do that when

464.24

you've got environments

466.24

that are

467.36

similar or ideally the same

471.199

and you can compare those and you can

473.36

have access to all the different pieces

475.52

of the system

477.12

that sometimes you don't have as a

478.479

developer in particular waterfall you

480.479

may be working on one section of code

483.039

and you never really have an opportunity

484.8

to see how that integrates with others

486.639

because there is no

488.56

platform where those things can be built

490.56

together and actually the integration

492.72

tested

494.479

so it can

496.08

well devops can be

499.36

it can great against some of the

500.879

waterfall methodology it can also

502.72

improve waterfall within each of those

506

steps with each of those silos

508.72

and make things a little

512.399

a little more stable but also just i

515.2

guess get ahead of the game a little bit

516.56

so that you're more confident coming out

518.32

of your step particularly implementation

521.12

side you're much more confident that

522.64

what you built and what you did

525.279

is correct and

527.44

will pass testing as opposed to i don't

529.92

know wrote a bunch of code think it

531.68

works we'll see what happens when you

533.2

start integrating it

535.36

so devops

536.64

although it may feel very different or

538.399

not

539.44

it may feel completely foreign actually

540.88

i guess with waterfall but it's not it

542.959

can work with that

546.24

agile

547.68

is

549.12

again it's going to push agile to be

551.279

more agile

552.64

when you think about the idea of scrum

554.959

and sprints within agile you have these

557.04

you know one two three week four week

559.2

whatever it is sprints and at the end of

561.36

those you do a bill you bring everything

563.04

together you test it you build it you

564.48

deploy

566.959

devops says we can do that more often

569.2

than that we don't have to wait every

571.36

week two weeks three weeks whatever we

572.72

don't have to wait till the end of a

573.519

sprint we can do daily builds so we can

576.64

have

577.6

a

579.04

an insight into how this is all going to

581.839

flush out at the end of the sprint

583.76

sooner

584.64

very much like

585.92

how it

587.36

can improve waterfall and give us more

589.44

visibility into what we're doing and

590.959

what we're producing

592.399

devops does that in the agile world it

595.12

may make things like

597.76

deployments at the end of a sprint

600.8

almost like that's a no-brainer because

602.959

if if you've got ci cd already built

605.2

into it you've got daily builds daily

607.279

deployments

608.56

and the only difference is at the end of

610.24

the sprint maybe you tell maybe you open

612.32

it up to some different people

614.48

to see that that was

616.839

deployed other than that you basically

619.2

have been deploying daily all along the

620.88

way and so it doesn't

622.72

in that sense doesn't cost you more time

624.88

or resources to do a build at the end of

627.519

the sprint because that stuff's already

629.36

been absorbed and is automated and ready

632.24

to go

634.72

you may have heard of site reliability

636.88

or sre

639.68

this is

641.76

it's really

644.32

it's more about reliability and

646

stability within systems uh it's very

649.12

much a google

651.12

concept something that came out of the

653.2

world of google

655.279

and

656.56

it is

658.079

while it started back in the 2000s

661.04

before devops was

663.12

really coined

664.64

there are a lot of similarities uh and a

667.839

lot of areas where sre and

670.8

devops worked are basically the same the

674.48

difference is

676.56

devops is focused on

679.279

the entire life cycle

681.6

sre is really more about us being able

684.24

to have a an environment like it doesn't

687.36

have to be production it could be a test

688.959

environment but having an environment

690.88

that is reliable that is reproducible

694.079

that is scalable

696.079

so we have

697.68

some of these things we will have

699.2

infrastructures code that way if we have

701.519

a server that goes down in our

702.8

environment we can have a monitoring

705.279

remember that's another one of the

706.24

pieces there's something monitoring it

708.16

sees that that server is going down or

709.839

maybe is about to go down

711.76

and can spin up another server in its

713.6

place

714.56

and get us closer to the you know five

717.04

or six nines of reliability or maybe

720

maybe 100 availability because

723.44

we can always see what's going on and

725.44

spin up another server and we're off and

726.959

running

728.72

so devops works very well

731.279

in the uh the sre world

735.12

sysops

738.079

now sysops is

741.839

really

742.839

more where like site reliability is

745.68

about keeping an environment

747.839

up reliable scalable stable

751.279

sysops is

754.16

system operations is this is like the op

756.56

side really of the devops side so it's

758.16

more about monitoring

760.48

and

761.36

responding to

763.279

issues with

764.8

an environment typically production

767.519

and again

769.76

while sysops

771.68

does a lot of typically has sort of a

773.6

manual kind of stuff you know there may

775.2

be some automated

776.959

monitoring but it's

779.279

much more

781.2

human intervention is involved to spin

783.519

up a system to bring one down to

786

redirect things

787.76

to note that there's errors occurring

789.839

things like that

791.76

devops makes sysops work better

794.959

it takes a lot of the human interaction

797.2

and possibility for

799.279

human error out of the equation so now

801.76

we've got things that are much more

803.12

automated that are

804.959

um communicating

807.839

in code as opposed to people having to

809.6

communicate with each other so you have

811.2

all these processes you have this really

814.24

this infrastructure around your platform

818

that allows you to be confident that

819.92

it's up that it's not

821.92

when it goes down usually to put

823.519

something you know

824.72

replace that piece sooner

827.04

rather than later

830.16

and then

831.44

regardless of the methodology you use

835.68

devops can be

837.76

an add-on

839.36

when you think particularly about some

841.519

of the

842.72

back up a little bit here when you think

844.32

particularly about a couple of these

845.68

things build automation

847.36

ci cd infrastructures code

850.32

even configuration management but

852.24

particularly those first three

855.36

even if you have your own little

856.959

standalone development environment

859.68

there is value in being able to rebuild

862.48

that quickly to know what it is to be

865.279

able to share that with somebody else

866.8

you know infrastructures or code um that

870.959

you can whatever your

873.199

approach is whatever methodology you're

875.76

working in

877.76

dev ops is something that is

880.16

is worth considering it is something

882.24

that can make you better

884.88

at doing

886.24

that thing whatever your methodology

887.92

happens to be so particularly when

889.839

you're thinking about waterfall and

891.199

agile

892.72

rapid application development if you do

894.16

like a rad approach that is

896

again a perfect way

898.399

uh a perfect fit for devops for that ci

901.68

cd so that we can

903.6

put something in front of users we can

905.519

make some changes and we can turn that

907.04

around quickly and say okay this is you

908.88

know does this work or

910.56

given this now what changes are needed

914.959

so there's a

918.079

a lot of ways that devops can fit into

921.279

our world

924.88

so let's look at some of the pros and

926.639

cons the benefits and the concerns that

928.399

we may have because they're not

930.959

they're not necessarily pros and cons

932.56

because it's not

934

really whether you can use it or not

935.36

it's more about this is what it provides

936.88

us and here's some things we need to

938.399

watch out for

955.12

you