24 September, 2020
Meet DevOps engineer – the money-saver, the last bastion of software development project, the person who accepts challenges that no one else is willing or able to take on. If you have a feeling that your product is draining your budget and you’re pretty sure it can be done cheaper, you’re probably right. And a DevOps engineer is the right person for the job. In this article, I’ll explain thoroughly what are DevOps engineer role and responsibilities and how they can improve your tech products.
What is a DevOps methodology?
Let’s imagine that you have a great software development team that prepared a modern and amazing application and you want to share it with the world. But all you have when hosting is concerned is just a simple legacy infrastructure that completely doesn’t fit your needs. It’s not optimised and you aren’t able to recreate it easily again after a crash. Not to mention preparing a new environment. Nobody wants to share embarrassing solutions like that with business partners.
That’s where you should consider and involve an additional team member, an infrastructure commando who is not afraid of new challenges – DevOps Engineer.
But what is the DevOps thing anyway?
DevOps is a set of practices, a process that’s a combination of software development (hence “Dev”) and IT operations (no surprise – “Ops”). It reduces the time needed to commit a change to a system, speeds up the system development life cycle and provides continuous delivery (CD). All this, while maintaining the high quality of the whole software product.
Okay, but how to achieve all this? DevOps methodology has some tricks:
- Being compatible with Agile software development practices (one might say that DevOps comes straight outta Agile),
- Taking care of all cloud-related issues,
- Maintaining the big-picture perspective for the whole project,
- Supporting software developers who usually don’t get engaged in anything past their chunk of code,
- Predicting opportunities for future development based on real-life data,
- Optimising the best possibilities for customers’ budget,
- Monitoring and optimising the app’s infrastructure,
- Introducing new solutions to improve work.
Oh, and the most important thing – DevOps is a methodology, NOT a person. The people responsible for implementing it in the software development projects are called DevOps Engineers.
Who is a DevOps engineer?
Sometimes people aren’t exactly sure what does a DevOps engineer do on day-to-day basics. So let me explain.
DevOps engineer job description can be summed up as taking your infrastructure to the next level.
DevOps engineers connect developers and operation experiences with up-to-date knowledge about the newest cloud infrastructure innovations to provide optimal and consistent environments. They oversee code releases and deployments based on Continuous Integration and Continuous Development (CI/CD). Infrastructure as code, automated processes, scalable, robust and tailored to your needs solutions are their expertise areas.
They will not work directly on the product’s code (that’s developers job). However, they are always hungry and ready to prepare something new and fancy. Of course, having in mind customer requirements and software team needs.
DevOps engineer roles and responsibilities
Okay, so you know what DevOps engineering jobs are all about. Now it’s time to see what responsibilities of DevOps engineers include.
- Optimising costs according to the client’s budget,
- Building infrastructure based on legal requirements (e.g. GDPR),
- Close cooperation with software developers and Quality Assurance testers,
- Automating processes,
- Managing release cycles,
- Establishing version control,
- Monitoring and security,
- Picking an appropriate set of DevOps tools.
The list is not complete, since the DevOps role is to be always prepared for the unknown. I like to think that we’re the special unit that deals with the undealable, solves the unsolvable and basically does everything that the development side just drops on us. Every day is a surprise for a DevOps Engineer!
As you’ve probably noticed, the DevOps requirement set is very diverse. Hence it takes a person with a particular set of soft skills and technical abilities in source code management, network operations, testing and deployment to become a DevOps engineer.
Skills for DevOps engineer
In this section, I’m going to tell you what skills (soft skills included) are required for DevOps job. If you’re reading this article because you’re wondering how to become a DevOps engineer, this part might be especially interesting for you. In this section, I’m going to tell you what skills (soft skills included) are required for DevOps job.
- Communicativeness – sometimes you’ll have to talk to the clients and convince them to go for a different solution than they required or explain how the designed infrastructure works.
- Assertiveness – the DevOps vs software engineering battle is never-ending. Sometimes you will have to convince your fellow developers to your ideas. And let me tell you – there are times it’s not easy…
- Thoroughness – being accurate and paying attention to details is mandatory for maintaining the highest quality possible. No place for slackers.
- Creativity – as I’ve mentioned before tasks are very different and require a lot of flexibility. Which is good for some because you’ll never get bored. Which is bad for some because there’s no place for being schematic. What is DevOps engineer to do than go full creative?
- Curiosity – the world of DevOps is a very dynamic one. Things change all the time, and a DevOps engineer needs to be hungry for new knowledge and fearless in testing and deployment of new solutions and ideas.
- Teamwork – it takes a village to create a really good tech product, so prepare for a serious amount of team play.
- Creating solutions that save time,
- Writing code and scripts to automate operations,
- Understanding Agile methodology,
- Developing Continuous Integration / Continuous Delivery (CI/CD) pipelines,
- Testing software,
- Being proficient with cloud platforms (the most popular are AWS, Google Cloud Platform, Microsoft Azure, etc.) and DevOps tools (more about them later).
Why do YOU need a DevOps engineer? Benefits of DevOps engineer in the project
DevOps engineers should be included in the software development process from the very first meeting to the day-to-day maintenance of a live project. This way, they can control performance testing, state of production, security (or lack of thereof), operating system versioning, updates, improvements.
If you engage DevOps Engineer in your project, from the beginning they are going to listen and judge. A LOT. But all for the sake of the product.
During the initial meetings, we may discourage you from using archaic, unstable solutions that can harm rather than help. We understand that you have your ideas but our job is to turn those into one, consistent vision – some things might be done differently, even if we are not sure how to do it yet. A little bit of research and testing can work miracles!
I wish we could just pre-prepare one-fits-all solution but DevOps works the other way round. Each software project is unique and has different requirements. We listen to the needs, maybe not related to the application itself, but the business model as a whole – SaaS project and white label one will differ completely. What’s more, we try to forecast the app’s future and adjust accordingly.
In the final stages of the project, DevOps engineers provide support to make sure the infrastructure is up-to-date, protected against harmful security breaches, and stable enough for end-users.
Another thing to consider is SEO. A DevOps engineer will always consider the website’s speed. Pages that open slower have a lower index, so no matter what you do, it will always be low in the search engine results. You might have the best app but if it’s in the bottomless pit of search results then your potential customers won’t even know about it!
It’s useful when you plan on having your own software team. The person taking over the app will have access to all the code written down (saves time for browsing documentation) and description of the entire infrastructure. Later, you can make changes, see who applied what and what has changed.
The scale counts – your app needs to handle heavy traffic flawlessly when there’s a bigger user load. But if you don’t need so many resources, DevOps engineer can always scale the app down. Hence, reducing the costs. Angry users don’t listen to reason – they will delete your app and stop using it altogether if it’s slow or unusable. It’s better to hire a DevOps engineer than to pay for bugs and a slow app with your reputation.
We keep an eye on your budget. You shouldn’t pay for resources you don’t use. You shouldn’t pay for work hours spent on tasks that can be automated. And you definitely shouldn’t have to pay 100k if you can pay 1k.
“Okay, but why can’t software developers do that?”
Developers are in your project to code, and let’s leave them to it.
Software developers want to deliver business requirements. A DevOps engineer thinks about business security – from infrastructure to legal disputes.
Wait, what? A DevOps engineer will take care of legal issues too? Yes, we’re complimentary legal advisers. I’ll give you a quick example – did you know that according to legal requirements (that vary depending on a country, industry, etc.), many systems require logs to be stored for a certain period of time in order to secure the client’s interests against civil law claims? Developers might not know that (and they don’t need to, really) but there needs to be a place to keep the logs so they don’t clog up the app anyway.
Developers should take care of the app being scalable and available all over the world. A DevOps engineer does exactly that but on the WHOLE infrastructure level. If your app works in Europe but you want to hit the North American market – a DevOps engineer will plan and execute it for you. For example, Infrastructure as Code allows us to duplicate the infrastructure basically 1:1 and then you can sell it and run it under a different brand.
Speaking of infrastructure – some developers are able to create it but they will work by trial and error. They don’t think about application bandwidth, which always results in rebuilding and improving the app. And that means additional costs. Still not convinced? Well, there’s a whole lot of entertainment out there – hacker attacks stealing data, bots destroying the website…
It’s much better to invest from the beginning and prepare for the future than stress over unplanned amendments, angry users and money leaking from your budget. Software development is expensive as it is, and nobody in this business can afford to be cheap.
DevOps Engineers at The Software House
We take DevOps methodology very seriously and firmly believe that we must be able to offer the client something that they need, not what we can do. We don’t limit ourselves only to our proven methods, but we constantly learn and make every effort to ensure that trends and new practices in infrastructure management are constantly updated. We consider each project individually – treat the infrastructure, support and maintenance issues flexibly and adapt them to every aspect of the client’s needs and requirements.
At The Software House, we believe in each client and their future success. We treat each app in terms of what will happen WHEN (not “if”) it’s big and successful. You cannot build an app otherwise.
Caring for the customer is one thing, and caring for the team is another. Our priority is the constant development of everyone in the team, knowledge exchange, mentoring and atmosphere of openness. We also like to challenge ourselves and solve technical problems for fun. Recently, we’ve organised training workshops where we planned an application for the upcoming presidential election in the USA. A lot of things had to be taken into account – for example, what will happen if 100k users are on the page and somebody releases a million bots to destroy the page?
Our customers never hire one person but the entire team that will sit and work until they come up with a satisfying solution.
So when someone is sick or on vacation, your project will have the continuity of work.
DevOps engineer would be naked without the armour of tools. Here’s what our DevOps team uses for:
- Automation – Jenkins, Bitbucket Pipelines, Github Actions, Gitlab CI,
- Configuration management – Ansible but we’re open to other solutions like Puppet Enterprise, Chef,
- Containerization – Docker, Kubernetes,
- Monitoring – Prometheus, Grafana, Telegraf,
- Repository hosting – Github, Bitbucket, Gitlab,
- Source code management – Git.
I’d like to finish with a quote from our CTO, Marek Gajda who commented on the State of Microservices report:
For the last 2 or 3 years, more and more clients have approached us and asked us for help because their in-house development teams lost control over microservice-based projects. Usually, after some hassle, everything can be straightened out but my pro-tip for you is: hire an experienced DevOps engineer at the very beginning of your microservice project. These guys can do real magic when it comes to future-oriented thinking and planning out your whole system’s architecture.