Day in the life of
DevOps Engineer – Mehmet Ali
I am working as a DevOps Engineer for a consulting company called Tigillo in London.
My main objective is to help software teams to deliver their changes to several environments smoothly and without any downtimes to the customers. For this, I create automation to build, test, and maintain the applications and the cloud infrastructure where the servers, applications, and other components run on. I work very closely with software developers and test engineers. I spend 20% of my typical day in meetings/communication with teams, 30% of it on operational tasks, and the rest for developing automation code.
Key Responsibilities
- Building and maintaining development tools. Development tools are not limited to but include code version control systems, issue tracking tools, continuous integration servers, application performance monitoring tools.
- Provisioning and managing resources that are used by applications; such as virtual machines, databases, backups, container orchestration tools. Understanding the requirements of the application and the estimated load is also important to provide a robust and scalable infrastructure.
- Scaling infrastructure and applications; scaling the resources up and down is required to adapt to the changing load for the application. An auto-scaling option is available for most cloud services, we just configure the scaling policies for these. In the case of legacy infrastructure, we may need to create custom code to scale application resources.
- Creating monitoring solutions; is not limited to monitoring the cloud resources for the capacity and the cost savings, it also includes application monitoring such as health, traffic, and performance of the applications.
- Creating pipelines for applications; a pipeline is basically automation that runs on continuous integration servers to build, test and deploy applications.
- Supporting releases when needed; even developers are mostly able to release with the pipelines created to deploy applications, in sometimes a DevOps Engineer’s support is needed in cases such as commissioning a new application, changes required on infrastructure with the release.
My Typical Day
- I usually start the day with a daily meeting where all team members -analysts, developers, quality assurance engineers, DevOps engineers- join to discuss daily tasks and if any blockers.
- I spend around 4 hours of my day on the planned infrastructure tasks such as coding terraform plans to provision required infrastructure components.
- Investigating problems and resolving them is an important part of my daily work. I tackle a range of issues in the environments, it can be anything, from a failing application to an expired certificate. Of course, the most critical ones are the production issues, any issue that impacts the end-users has the highest priority. This is not an everyday task, but it can be quite often if you’re working with a large infrastructure.
- There are also regular team meetings I join such as grooming or retrospective meetings during the week.
- I support developers and quality assurance engineers whenever my skills or knowledge is required.
Pros
- It’s a very popular role and in high demand from startups to enterprises usually with a generous salary.
- Great opportunity for learning new skills, which is very satisfactory for an engineer.
- Your skills are mostly domain-independent, which gives you the ability to change your job even between different sectors.
- You work with cutting-edge technologies.
- You have a direct impact on the agility of your clients/company.
Cons
- You need to work out of business hours from time to time, even it’s usually balanced between team members with on-calls.
- DevOps is a cultural shift and your positive impact will be limited without support from all stakeholders.
- Not all applications are running on cutting-edge technologies, you may need to deal with the legacy systems that applications and infrastructure not created with a DevOps mindset. Especially mainframes and legacy firewall systems are hard to apply DevOps practices due to restrictive policies and aged technology.
- DevOps is a multi-disciplinary role that will require a lot of work and tools to be learned initially.
Advice to aspiring DevOps Engineers
- Completing a degree in computer science or another engineering with a focus on software development would be helpful in the fundamentals.
- Be a polyglot developer, learning Python language can be a good start.
- DevOps has a strong bond with Agile Methodology, be a good Agile practitioner.
- Linux and bash are part of your daily life, having advanced Linux/bash skills are always appreciated.
- Build your knowledge in one or more cloud technologies including Amazon Web Services, Google Cloud Platform, and Microsoft Azure.
DevOps Engineers
DevOps Engineers deliver agile IT solutions by combining development and deployment. They help develop IT projects and remain involved during deployment, allowing organizations to make swift changes.