- [Presenter] DevOps, including the underlying technical,
architectural and cultural practices,
basically converge many technical and project management
and also management movements in nowadays.
So before we start defining what is actually DevOps,
let's actually take a look at the history
of the development methodologies.
So in the past we actually had things
like the waterfall method
and basically that model is a software
and hardware development and project management methodology
that at least has five to seven phases.
And basically they all follow a strict linear order.
So one phase cannot start
until the previous phase has been completed.
There are a few reasons
why organizations use the waterfall methodology.
One of the main reasons is because
the project requirements are agreed upon from the beginning.
So subsequently,
planning and scheduling is actually
a little bit simpler and a little bit more clear.
And a fully laid out project schedule
and accurate estimates.
Basically, you can potentially
think about project costs
and resources and deadlines from the beginning.
However, the disadvantage of this methodology
is that it can be difficult for customers
to enumerate and communicate all of their needs
at the beginning of the project.
So if your end customer is actually dissatisfied
with the product in the verification phases,
it can actually be very costly
to actually go back all the way back
and design the code again.
And then of course provide some type of fix
for whatever the case that your customer actually brings.
So in the waterfall methodology,
that linear project plan is actually rigid
and lacks a lot of flexibility
for adapting unexpected events.
Then you have the Agile methodology
and Agile is a software development
and project management process
where a project is actually managed
by breaking it up into several stages
and then involving constant collaboration
with all stakeholders and also continuous improvement
and interaction or iteration at every single stage.
Now, the Agile methodology begins
with end customers basically describing
how the final product will be used in their environment
and clearly articulating
what problems they actually are trying to solve.
And then once the coding begins,
all the respective teams cycles through a process
of planning and executing and evaluating
all these developing phases and stages.
Now, this process may allow
for the final deliverable to change
in order to better fit the customer needs.
So that's why a lot of people
historically, and nowadays
still actually use the Agile methodology
to have more flexibility in their environment
and throughout the developing process.
In Agile, the input to the developing process
is actually the creation of a business objective.
A concept, an idea, or some type of hypothesis
that you may actually have for the work.
Then the work is added to a committed backlog.
And then from there, the software development teams
actually will follow that standard, Agile,
or iterative process to transform
that idea into user stories.
And this is actually a terminology from Agile.
And then those user stories will actually have some type
of feature specification.
Now, this specification is then implemented in code.
Then the code of course is also checked
into a version control repository.
Things like GitHub or GitLab and many others are there.
Now, there's also a concept adopted
by many organizations related to Agile.
And that concept is called Scrum.
Scrum is basically a framework that helps organizations
to actually work together
because it encourages teams to learn through experiences.
And basically there's a concept
of self-organization while working on a solution
and then reflecting on their wins and losses
to continue to improve.
Now, Scrum is actually used by software development teams.
However, it is also a principle
and lesson that can be applied
to all kinds of teamwork as well.
Now, Scrum describes a set of meetings, tools,
roles that basically will work
in concert to help teams structure and manage their work.
Scrum.org has a set of resources
even a certification and training materials
that are related to Scrum.
For the purpose of this exam,
you only have to actually know
the different Agile methodologies and what Scrum is,
and Scrum Master, which is actually the person,
typically a project manager
that is orchestrating all the developing,
I guess the project deliverables
and all the different milestones
and the tasks and so on.
Now, talking about tasks,
the Scrum framework uses the concept of sprints
and those are a short timeboxed period
whenever the Scrum team actually works
to complete a predefined amount of work.
Now, sprints are one of the key concepts
of the Scrum and Agile methodologies.
Now, there are three general ways to DevOps.
The first way or method includes systems and flow.
And this way or method, you actually make work visible
by reducing the work batch sizes.
Basically you also reduce the intervals of work
and prevent defects from being introduced
by building in quality and control throughout the process.
The second way includes a feedback loop
to prevent problems from happening again.
Basically enabling you to do faster detection
and recovery by seeing problems as they occur,
and maximizing opportunities to learn and improve
throughout your process.
In a true DevOps environment,
you actually conduct dynamic and disciplined experimentation
and you also are allowed to take risks as well.
So you define the time to fix issues
and make systems better.
The creation of shared code repositories help tremendously,
things like GitHub and GitLab.
It definitely helps you significantly
to achieve this continuous experimentation
and learning process.
Now, the last concept
that I want to introduce here is continuous integration
or CI, which is a software developing practice
were programmers merge code in an ongoing basis.
Basically in a central repository like GitHub
or GitLab and many others, multiple times a day.
And then you also have continuous delivery or CD,
that sits on top of CI.
And basically in many cases,
you refer to this as your CI/CD pipelines.
And this provides a way
for automating the entire software release process.
So whenever you adopt the CI/CD methodologies,
each change in code will actually trigger
an automated build and test sequence.
This automation actually also provides feedback
to the programmers who actually made the change
from the start.
CI/CD has been adopted by many organizations
that provide cloud services,
including software as a service,
platform as a service, and so on.
For example, the continuous delivery
can actually include cloud infrastructure provisioning
and deployment, which basically,
in the past, you have done all this manually.
And then it also consisted in multiple stages.
And now with the CI/CD process,
this can be fully automated
with each run fully logged and visible to the entire team.
That's a huge, huge benefit of today's modern world.