DevOps describes how direct collaboration between software development and IT operations can be improved. Common incentives, processes and software tools are used for more effective, more efficient teamwork between development, operations, quality assurance and field specialists.
Conservatively, the occupation of a DevOps Engineer emerged from System Administrators, responsible for managing the smooth operation of computer systems in both, development and productive environments. The multitude of quickly emerging technologies, however, made an adoption of the required skill set a necessity. As a consequence, System Administrators were increasingly confronted with finding synergies between innovative development processes and likewise innovative new technologies like build tools, dynamic environments, and, lately, cloud computing.
Thus, DevOps Engineers emerged as the key element to facilitate these adoptions.
Here at twinformatics, DevOps Engineers utilize a very broad spectrum of skills to advance the technology stack for the whole company.
Conventionally, a DevOps Engineer was mainly tasked with system configuration, management and monitoring. This is still true in some regard. After all, an established company with lots of developers and products which need to be maintained, also require a certain level of attention.
This can be mundane tasks like backup/restore operations, pinpointing errors or migrating databases. However, the more interesting, but also more challenging assignments for DevOps at twinformatics are of a more forward-looking nature:
Enable others to work more efficiently
Even the best DevOps Engineer cannot single-handedly operate a several hundred employee company. Therefore, the guiding principle is “You built it, you run it”. This principle comes with its own set of challenges and advantages. In our experience, it speeds up the development process enormously. Furthermore, the possibility to directly influence infrastructure, builds developer-awareness and responsibility. For the DevOps Engineer it means that the main challenge is to provide the reliable and feasible means for the developer to do that.
Let’s take a database for example. Instead of provisioning the database himself, the DevOps engineer can devise an automated, tested way to provision the necessary infrastructure. This can be a terraform script, a kubernetes configuration descriptor for the cloud, or a plain and simple ansible script. As a result, instead of the need to perform the same tasks over and over again, reviewing and accepting a merge request suffices.
Adopt new technologies
Beside automation, a very important element of a DevOps Engineer is to learn and assess new technologies. The tricky thing here is to not jump every hype-train possible. Instead, an objective scrutiny is necessary to evaluate how to apply a new technology and, even more importantly, how much effort it is to adopt an existing system.
A perfect example is the docker technology and docker environments like swarm, on-premise kubernetes or their cloud pendants like EKS on Amazon, or GKE on Google. Since kubernetes was first introduced in 2014, the technology made huge leaps regarding usability, functionality and flexibility. In 2014 it would have been quite dangerous to move the whole technology stack of a company to, say, a self-managed on-premise installation of kubernetes. Now, only seven years later, the technology is mature enough to allow such a consideration, especially with the advent of cloud-provided kubernetes-as-a-service. As a matter of fact, this is exactly what is currently happening at twinformatics.
In a nutshell, the possibility to constantly see and learn new things is very descriptive for the position of a DevOps Engineer.
A result of the broad spectrum that is usually encountered during daily work, DevOps accumulate knowledge in every area of the software development process and infrastructure landscape. This, in turn, helps to support developer teams. It might range from very system-near tasks like capturing network traffic of a service or searching log files by grep-ing for regex expressions to finding the correct expression for the metric in a grafana dashboard.
Cloud Infrastructure Design
A very essential and innovative aspect that justifies its own section is cloud-based infrastructure.
Especially in large companies, it can be next to impossible to start a cloud initiative. In the end, there is a lot at stake. The usual questions are:
- How can existing services co-exist with cloud based ones?
- Can the build process be leveraged to a cloud platform?
- Is the network fit for a seamless and secure integration?
- How much effort is it to enable developers to facilitate the cloud the same way they are used to facilitate on-premise infrastructure?
- Will it cost more or less?
- What is the benefit in the first place?
Some of these questions are easily answered if someone already has experience with on-call duty. Others can best be answered by implementing a proof-of-concept scenario.
Here at twinformatics, DevOps have the opportunity to handle interesting technologies and advance the existing technology stack by innovative approaches. At the same time, the freedom to try and evaluate completely new ideas is provided as well. This way, it can be ensured that the company thrives even in this fast-paced time of quickly emerging new technologies.
As a DevOps Engineer I am working at viesure Innovation Centre, a subsidiary of twinformatics. My main areas of expertise are cloud based infrastructure, application support and application reliability. In my free time I enjoy gaming, sports and music.