Transcript
This transcript was autogenerated. To make changes, submit a PR.
Hi everyone, my name is Megha Kadur and it's a great pleasure to
be presenting at Kube native 2022.
So today my talk is all about my journey into DevOps world.
How it all started actually. So before
beginning the presentation, let me give you an overview about the things
that I will be talking today. I'll start with my background
and then I'll talk about how I got introduced to DevOps
World. Then what is this DevOps? What is
its roles and responsibility? What DevOps is actually trying
to solve in this it world. And then I'll talk about
things that you should know before starting your DevOps career
because I started from a non it background and there were many
things like I was unaware about. But in my DevOps journey
I got the opportunity to learn those things. So then I thought
okay, if I would have known these things beforehand, it would
have actually helped me in fast tracking my career. So I'll be
sharing those things with you and the resources that actually helped me.
So let's begin with the presentation talking about my
background. I have done ECE, electronics and communication engineering
and I have worked for almost three years in this domain. I started
off as a testing engineer where I was testing the specification of
the products and components. Later on I wasn't happy
with the job role that I was performing, so I started exploring
different career options. So that's when I got to know about DevOps
and then I wanted to know how it works and what are the things.
So I started searching in Google like what is DevOps, how it
works, what are the skills required for that and many more. There was plenty of
information available about DevOps regarding its lifecycle and its tools.
Information like what tools can be used like dockers,
Jenkins, kubernetes, various other cloud providers like
AWS, Azure, GCP and many more. So it was
a lot of information for me to grasp at that time. So I
took one step back to understand what DevOps is
and why are we implementing DevOps culture and what
are the challenges thats DevOps is trying to solve. So let's try to
understand what DevOps is. Actually.
DevOps in simple term is an integration of development
and operation team. It tries to improve the collaboration and productivity.
Let us understand a simple software release cycle. So in order
to develop any application, it starts with the idea,
gathering the information. Later on we plan it, plan the features
that needs to be included in the application. Then the developer writes the
code, testing of the code is done. Then we package
the application so that it can be deployed in the production
environment. And finally we monitor the application. So that's what
a simple software release cycle looks like.
So while developing the application, we might face challenges and problems
such as managing and tracking the changes in the code
is difficult. Manually testing of various components or
modules of the project takes a lot of time.
Incremental builds are difficult to manage, test and deploy,
ensuring consistency, adaptability and scalability across
the environment becomes difficult. Also, due to lack
of collaboration and miscommunication between various teams that are
working in a project, there is an uncertainty that whether
the code will work perfectly fine in the production environment
or not. We may also encounter issues such as
blame game where the dev team tells that the code is working
perfectly fine in their system, whereas the operation team
on the other hand tells that the environment is configured perfectly fine.
There must be some issue in your code. So this is a kind of blame
game that goes on. We may encounter unpredictable
issues in the production environment that had to be fixed
at an early stage. There will be release and deployment mismatch happening
and there will be lack of monitoring and feedback.
There comes DevOps, which is one solution for all problems.
DevOps is not a particular team nor a person. It's the
state of mind and we work in collaboration to solve the
issues and deliver the product on time. It's a culture and
implementation of best practices with the help of DevOps tools.
So I took an online course to understand how we can implement the
DevOps. And then in my DevOps journey I
started using many DevOps tools, but I had to still figure
out why am I using these tools. Then I started to
understand the concepts like version control. What is CI
CD pipeline concept? What is infrastructure was code concept
and started relating these tools with the concept.
What is version control? Version control allows you to take snapshot
of your project. It allows multiple users to manage
multiple revision of the same unit of information.
Git is one of the famous version control tool and we
have GitHub.com was the code hosting platform
for collaboration and version control. Git records
the changes that are made to the file. So I started
familiarizing myself with these various git commands and
this is one of the tool thats you will require your
entire DevOps journey. So do learn git top
most demanding cloud platform are AWS,
GCP and Azure. We can start learning with any one of this
cloud platform. I started my cloud journey with Azure,
so all of these cloud providers have similar concept.
It's just that the naming and interfaces are little bit different.
Next concept is DevOps automation with infrastructure as
code infrastructure was code provides us a way to define
our resources in a declarative manner and
put them together in a single unit called as configuration
file. Most of the cloud providers have their
own infrastructure. Automation like AWS is having
cloud formation, GCP is having Google deployment
manager, and similarly Azure is having Azure resource
manager. So let's move on to some benefits speed.
It allows us to set up a complete infrastructure by just
running the scripts and we can do it for any environment
like dev to prod to QA. The next benefit is low
cost. It helps in lowering the cost of infrastructure management.
We won't have to spend money on hardware or even rent
any physical spaces to store them. The next
is increase efficiency. You can deploy your infrastructure
architecture in many stages which makes the whole software
development cycle efficient tracing and increase the team production.
So the next benefit is consistency. Manual process
results in mistakes. So these tool helps us
in solving these issues by allowing us to write
the configuration files that can be deployed again and again
without any discrepancy. Let's move on
to next concept that is containers.
Containers are packages of software with all its
dependencies and libraries together to run in
any environment. Docker is the famous
containerization tool. It helps us to build the code at
developer side and finally ship the code and
run it in any environment. No matter it is dev,
QA or prior environment, it will for sure run seamlessly.
Let's move on to next concept that is container orchestration.
Kubernetes is popularly known as container orchestration
tool. It manages the availability, scaling and networking
of containers, monitoring the clusters and managing
the timing of the container creation. Consider this
rectangular space as Kubernetes cluster.
So what is a Kubernetes cluster? Cluster are considered
to be a set of nodes that run containerized application
and each cluster will have at least one worker node.
So what are nodes? Nodes are machine. They can be physical,
on prem or virtual. A node can have multiple pods
running in it. So what are pods? Pods are the smallest
unit of kubernetes. We can run single container or multiple
containers inside a pod and each worker node will
have multiple pods running and if a container stops or dies
inside a pod, it will automatically get restarted.
So let's move on to one other concept that is configuration
management. Once we have our infrastructure
provisioned the next step is to make sure thats everything is configured
so we can use various configuration tools such as
Ansible, chef, puppet, saw stack and
many more. Now we have CI CD concept.
CI CD is the backbone of DevOps continuous
integration and deployment is a series of steps that must
be performed in order to deliver a new version of software.
It helps in improving the developer efficiency,
faster software build, easy to find bugs
and improve collaboration. There are plenty of CI CD
tools available such as Jenkins Circle,
CI drone, Azure pipelines, GitHub actions and
many more. So I started my DevOps journey from
Jenkins and then I started using Azure build and release pipelines
and many more. Nowadays IT companies are
adapting more of proper data analytics
and log management. So Grafana,
Prometheus, Ilk, Stack, Splunk, all these are
examples of monitoring and log management.
Let me share few things I wish I knew before starting my DevOps
career. Since I'm coming from a non IT background, there were
many things that I was unaware about. So then I thought that if
these things, if I would have known before, it would have actually helped me
in fast tracking my career. So the first thing is learning a programming
language. So I'll share one of my scenario,
like where I face challenges. So I
was assigned to a project and I was creating this build and release
pipeline. So at that time what happened is the pipeline used to fail with different
kinds of error and since I was not much aware about the programming language,
it was difficult for me to distinguish between the error. Is it because of
the code issue or is because of the configuration of the pipeline
that I have done? So in this way programming language
will actually help you. If I would have known those programming languages
beforehand, it would have actually helped me in identifying
those issues. So I prefer that in your
DevOps journey, learning a programming language is actually a benefit
and a plus point for us. So the other thing is
understanding the concepts. So usually when people
say that we want to change our career to DevOps
or some other career, we just think about the first thing thats comes into our
mind is like what are the tools that we need to learn
in order to get the job? But that's important. But that's not
the first thing. The first thing is that we need to understand the concept so
thats we can relate those tools with the concept and try
to implement the DevOps culture in our project. So I
also had the same kind of issues. So then I started learning what DevOps
is and how it actually solves the problem, how it is
solving the problems and what are the roles and responsibilities.
So that's how I started learning DevOps
and I continued to work in DevOps domain. The other
things is learn any scripting language.
So this will actually help you in automating different
tasks. So when I was creating different build pipelines
and release pipeline. There were few steps where we had to write
the script and automate it. And at that time, as I said,
I wasn't aware about the scripting and since I'm coming from a non
it background, so I had to learn the scripting language and then
create the script and add it in the pipeline. So scripting
language is a kind of benefit. If you know it,
it will help you to automate your task. So the other thing is
communication and collaboration. So we feel communication and collaboration
is not important. But as much as
learning DevOps tools is important,
communication and collaboration is equally important because
if we have technical knowledge and if we are not able to convey that,
then it's very difficult to survive in this DevOps world. So initially
when I started my DevOps journey,
I was facing issues with communication also. So then slowly
I started to communicate with people, collaborate with people
trying to understand stand the different technologies and concepts.
So it's a kind of like collaboration and we were able to
solve the issues. So that's what communication and collaboration
is equally important. Thank you for joining my session and I
hope it's beneficial for you all. You can connect with me on LinkedIn,
Twitter or on my YouTube channel. Thank you,
have a nice day.