Skip to main content

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.

Understanding DevOps

I knew terms like “CI/CD” and “automation” were associated with DevOps, but I still didn’t fully understand what they actually meant, making DevOps feel like a distant, uncharted territory. This might have been influenced by the environment I was in—people around me rarely talked about DevOps, which made it harder for me to grasp what it was or what DevOps Engineers actually do. As a result, I never really considered it as a possible career path.

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.

When the internship officially started, during a Linux and Docker training session led by my mentor, my mentor asked us 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

Although the initial plan was for me to learn and use Terraform, an Infrastructure-as-Code (IaC) tool that automates the provisioning and management of infrastructure resources, manually provisioning the infrastructure and resources in the AWS Console using the ClickOps way helped me more 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 share all the definitions you’ll find online, this part of DevOps is something best experienced, not just studied.

Skills you need to start in DevOps

You might wonder how to start in DevOps—here are tips that helped me break into DevOps and related roles. Since I’m still early in my DevOps journey, I may not be fully credible to offer expert guidance. Instead, I’ll share insights and advice I gathered from mentors and professionals during my internship and industry 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 many developers learn advanced DevOps concepts on the job by collaborating with experienced teams and working 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.

🔗 Read the article in Medium: Demystifying DevOps


Author: Nhyl Bryle Ibañez, DevOps Intern at Ingenuity Software

Nhyl Bryle Ibañez is a DevOps Engineer Intern at Ingenuity Software, specializing in AWS. He is also the Lead of the AWS Learning Club Mindanao and an active member of various tech communities in the Davao region.