DevOps initially originated due to conflicts between Developers & Operations. DevOps is about removing barriers and bridging the gaps between the development team and operations team, that traditionally worked separately from each other. It’s here where a DevOps Engineer role comes to play to make sure of the efficiency of both the teams and nothing falls unnoticed from the development of the service to its deployment to the end-user or customer.
You will find a lot of formal definition of DevOps on internet, but for me DevOps is “Taking the error-free code from a developer’s machine till production, maintaining it and getting feedback from the respective stakeholder” and the main role of a DevOps Engineer is to automate each and everything in between.
The automation process includes building the Infrastructure through Code, containerizing the apps, writing Continuous Integration/Continuous Deployment (CI/CD) pipelines, deploying apps, adding observability to the applications & infrastructure.
The above process highlights the technical & formal tasks of a DevOps Engineer, but in daily practice it can be quite uncertain at times. As there are some days, everything goes smoothly, but most of the days, you get alerts on X is not working as Y has changed in the cluster and Z seems responsible for that or X has stopped working even though nothing has changed, and this is the part where all the fun begins, the Debugging. It is all about finding out what happened and why it happened. A significant part of the DevOps Engineer’s time goes into debugging, finding the root cause of the issues and fixing it whether it is within the infrastructure, the platform apps, or the app code itself. The observability tools will be your helping props in this quest.
Another element of a DevOps Engineer’s day-to-day is being asked often by Developers as to why the pipeline failed or why the app is crashing, or why they are not able to login even though the logs clearly state the issue or that simply they are using the wrong credentials :D, however as a DevOps Engineer you must communicate frequently with the Developers team and help them where needed to ensure both the efficiency and quality of the service delivered. It is the role of DevOps Engineers to help developers in every way possible.
Last, but not the least, Security. DevOps Engineers are also tasked with securing the infrastructure and the apps. There is even another term DevSecOps for it, but I believe Security is a part of DevOps, not something separate. A “fully secure system” is a myth, vulnerabilities are introduced each day, so it is the role of the DevOps Engineer to be vigilant for any vulnerability by making sure the infrastructure and the apps are as secure as possible, consistently, and continuously. This means dedicating time in your day in spotting these issues and updating the infrastructure & apps accordingly.
Here’s a quick summary of what a day in the life of a DevOps Engineer looks like:
- Tea/coffee (the most important thing)
- Pray that there are no alerts
- If there is any alert, debug what was the root cause and fix it
- Help developers
- Use poorly documented open-source software
- Check for any vulnerability
- Managing Kubernetes clusters
- Managing CI/CD pipelines
- Update platform apps/cluster to the latest version
- Meetings with the teams
- Managing infrastructure through Infrastructure as Code
The day-to-day activities of a DevOps Engineer is vital to any FinTech, especially the likes of TG. It helps in delivering services to end-users rapidly, ensures the reliability and the quality of the services delivered through the continuous updates and debugging, maintains the security of the infrastructure, enhances collaboration between teams and ultimately helps in scaling the Fintech start-up at reduced risks.
Glossary of DevOps Jargon:
- Containerization of apps*: It’s a way to package a software and it includes placing a component of a software into an isolated unit or a container. These components can include the software’s environment, it’s dependencies and configuration. It enables DevOps to deploy any app faster and more securely. (Source: Kubernetes)
- Terraform: An infrastructure as code (IaC) tool that allows you to build, change, and version infrastructure safely and efficiently. (Source: Terraform)
- CI/CD Pipeline: It stands for Continuous Integration/ Continuous Delivery or Deployment and it’s a series of steps undertaken by the DevOps Engineer to help improve the delivery of a software.
- Node*: It is a physical or virtual machine which contains services (Source: Kubernetes)
- Clusters*: A cluster is a combination of two or more systems or machines. (Source: Kubernetes)
- Kubernetes*: An open-source container orchestration platform for automating computer application deployment, scaling, and management installed on a Cluster(Source: Kubernetes)
- Pod*: The smallest deployable unit of a Kubernetes cluster (Source: Kubernetes)
*Containers, Nodes, Pods are part of the architecture of Kubernetes which helps DevOps to manage containers easily.