Demystifying DevOps

Nhyl Bryle Ibañez
Ingenuity
Published in
7 min readMay 14, 2024

There’s this mist that shrouds DevOps. When searching “What is DevOps?” in your favorite search engines, varying responses await you:

DevOps is a combination of software development (dev) and operations (ops).
- GitLab

DevOps is a set of practices, tools, and a cultural philosophy that automate and integrate the processes between software development and IT teams.
- Atlassian

If you’re new to the field of tech and still navigating it, the term and its definitions surely sound vague. It’s not as easy as explaining what a Frontend Developer is so even though you may have heard the word “DevOps” before, it’s understandable to have known very little of what DevOps is. Even I had only a cloudy understanding.

I knew terms like “CI/CD” and “automation” were associated with DevOps but even I didn’t fully understand what those terms actually meant, still leaving DevOps a distant, unchartered area of land. It might also be due to the environment that I was in; DevOps was not typically discussed around me, which contributed to my lack of knowledge about DevOps and what DevOps Engineers do. As a result, it was not something I considered I would be doing as a career.

Unbeknownst to me, I was somehow already exposed to DevOps and have been kind of “using” it. Deploying my React and Next.js applications in Vercel helped me understand what a “deployment” is. I remember being ecstatic to have my application be accessible to everyone and not just live on my local machine anymore. It also allowed me to have my first interaction with a CI/CD pipeline although at first, I didn’t know that it was one. Furthermore, the thought of graceful failure through instant rollback always puts me at ease knowing that there would be no disruption at all despite unsuccessful deployments. These were the things that I have truly enjoyed and appreciated ultimately making Vercel my go-to platform when hosting my frontend applications.

At the same time, using AWS services unveiled a plethora of tools and technologies on the web I didn’t even know existed. Tinkering in the cloud would then serve as my foundation in entering the world of DevOps.

An Apprentice’s Fateful Encounter with DevOps

It is uncommon, at least in our country, for companies to offer an internship in DevOps. But as rarely as it gets, I happened to stumble upon a DevOps Engineer role in an internship program offered by Ingenuity Software. Ike Gabriel Yuson, a DevOps Engineer in the said company and who would also then become my mentor in the program, encouraged me to give DevOps a try and apply as an intern. It didn’t need much convincing as I knew I would be able to expand my knowledge and skills. At the same time, it was exciting to know that I’d be able to learn and use technologies I wouldn’t normally have access to.

Come internship proper, during a Linux & Docker training session led by my mentor, we were asked what DevOps was. Being the sole DevOps Engineer intern has put pressure on me to give a correct answer.

It is a culture — a set of practices that “DevOps Engineers” implement.

That’s what I remember answering. I thought I had given a satisfactory response but then my mentor remarked,

DevOps is not a role, it’s not something only DevOps Engineers should do. Everyone should know and practice DevOps.

I’d already heard this, but it still confused me: if everyone should know and practice DevOps, why are there DevOps teams and engineers in the first place? I think now is a good time to share what I primarily did as an intern, providing a glimpse of the role of DevOps Engineers.

Infrastructure Provisioning

While it was initially planned for me to learn and use Terraform, an Infrastructure-as-Code (IaC) tool that automates the provisioning and management of infrastructure resources, doing things the ClickOps way by manually provisioning the infrastructure and resources in the AWS Console allowed me to easily digest the concepts and processes. Albeit slow, doing things manually at first always proved to be a great method when learning new technologies.

To start, I initialized an EC2 instance where I deployed our containerized Django application. For our frontend, I deployed our Next.js app in AWS Amplify for seamless deployment. I also provisioned other resources that would meet user requirements such as S3 buckets for object storage.

CI/CD

When we had no CI/CD pipelines set up in place yet, I had to manually deploy our application every time the developers pushed new changes. I also had to check for build errors and unsuccessful deployments and relay them to the dev team. So I set up a CI on our frontend to automatically check for build errors every time a developer makes a pull request for early error detection. In addition, I also set up a CD pipeline on our backend to automatically deploy our Django application in our server allowing me to have a good night’s sleep when everyone was rushing on crunch time to meet deadlines.

Continuous integration (CI) refers to the practice of automatically and frequently integrating code changes into a shared source code repository. Continuous delivery and/or deployment (CD) is a 2 part process that refers to the integration, testing, and delivery of code changes. Continuous delivery stops short of automatic production deployment, while continuous deployment automatically releases the updates into the production environment.
- Red Hat

This is only a small part of what DevOps Engineers usually do. It typically includes infrastructure and application monitoring, configuration and logs management, and container orchestration. However, this is not just what DevOps is all about. It’s also about the notion of communication and collaboration which you would only experience with a team or in a work environment. So even though I can give you all the definitions the internet may have, this part of DevOps is best experienced, not just studied.

Skills you need to start in DevOps

You might be wondering how to start in DevOps so here are some of my suggestions that can help you penetrate and get a career in DevOps or any adjacent role. Please note that since I’m still scratching the surface of DevOps, I may not have the credibility to provide any guidance on navigating this field. Instead, what I’m going to impart to you is the information and advice I got from mentors and professionals whom I had the chance to ask during my internship and events.

Bash

You need to have foundational knowledge and skills in Linux and Bash. As most servers operate in Linux, equipping yourself with knowledge in Bash allows you to easily navigate into a Linux server. In addition, curating your bash configuration such as your aliases can lead to increased productivity and error prevention.

Vim

When dabbling with servers, there aren’t many choices when it comes to text editing and integrated development environments (IDE). This makes the knowledge and skills in Vim highly crucial for anyone who tangos with servers. Take this as a sign to practice even the most basic Vim motions, as mastery in Vim almost always guarantees an increase in productivity.

Git

Software projects are and will always be housed in a Git repository. It is simply the single most important thing that enables collaboration and empowers organizations to iterate and deploy features swiftly, driving business value and delighting end-users. In other words, if you don’t know Git, you might as well quit and become a shepherd tending sheep in the mountains.

Docker

Since being created in 2013, Docker, and containerization in general, has taken the world by storm and has been the industry-standard practice in software development. It is especially true when it comes to deploying your applications in the cloud as containers make it simple and painless to isolate, package, configure, monitor, and scale your applications. Docker proves to be a highly valuable asset to anyone, whether you’re in development or operations or someone in between.

Frontend & Backend Development

A DevOps Engineer needs to be involved in every step of the development process, from its inception to product delivery. That is why knowledge and experience in dev tools and technologies are good to have as it allows DevOps Engineers to have a vote on the tech stack a team will use.

New shiny tools spawn every week, causing a lot of unnecessary hype and noise within the community. Furthermore, a lot of developers are easily attracted to these things but at the end of the day, it doesn’t guarantee it will work in a production environment. A DevOps Engineer’s expertise and experience in using and deploying various tech stacks can provide invaluable guidance in selecting tools and frameworks that are not only cutting-edge but also proven to be reliable and scalable in production environments.

Cloud

With more than 90% of organizations using the cloud, foundational knowledge in cloud computing is highly valuable. Hands-on proficiency with leading cloud platforms like Amazon Web Service (AWS), Google Cloud Platform (GCP), and Microsoft Azure will jumpstart your career not only in DevOps but any role associated with the cloud. Although costly, getting certified with any of these cloud providers will give you a significant edge over others who do not.

It’s not easy and accessible to practice DevOps. To get deep with DevOps, you will likely need to gain hands-on experience in a professional setting. This is why most of the advanced DevOps concepts are learned on the job, where you can collaborate with experienced teams and work on real-world projects. Therefore, starting as an intern or applying as a DevOps Engineer at companies like Ingenuity Software could be an excellent opportunity to not only acquire foundational knowledge but also get your hands dirty with practical experiences. Of course, this is not the only way, but such a path would ensure career growth and personal development in a fast-paced industry.

--

--