The role of DevOps for successful software projects

According to the Hype Cycle for Application Development [1], DevOps was on the “peak of inflated expectations” in 2016 and is now on its road to “plateau of productivity” in the years to come [2]. Time for us to take a closer look on why this movement was adopted successfully by Motius and other ICT companies.

DevOps is a vague defined term that describes a group of concepts, tools, and techniques which aims at melting the design and implementation of IT projects from development and operations into a holistic perspective [3]. In practical, this leads to moving the responsibility of operating an application to the team that developed it. Typical symptoms are “containerizing” everything, often along with agile process models, continuous delivery pipelines, microservice architecture patterns and application performance monitoring.

So, DevOps is about merging silos, collaboration and responsibility throughout the whole application lifecycle. This lifecycle had clear boundaries at the production phase where engineers, that may barely know a new application, had to operate it. This complex task, involves not just getting the application to run, but includes finding the right configuration parameters, maintaining the applications state and handling incidents when they occur (typically on Sunday night…). When operations and development are strictly separated, a lot of expert knowledge is getting lost when transferring applications into production. This knowledge is valuable to optimize configuration and to resolve issues. Furthermore, operations today are often outsourced to infrastructure providers like Amazon Web Services [4] and companies run in a NoOps mode. This requires the dev team to acquire a lot of operation knowledge anyways. The role of the DevOps is then not only a valuable engineer in the team but sheer necessity.

One day in the life of a DevOps Engineer

One typical responsibility of the DevOps role is designing the infrastructure in which the application has to run. This task is somewhere in between typical software architecture and the classical software development roles. Technological stacks are designed, evaluated, and changed over and over again and DevOps engineers have to adopt the infrastructure design to these changes. A typical technique nowadays is to build containers and their relations in form of infrastructure scripts. The most popular ones are docker [5], in combination with docker-compose and docker-swarm, but other container technologies like Core OS’ rkt [6] and container orchestrators like Kubernetes [7] getting a lot of attention lately now. We see a complex set of available technology here and still new technologies emerge. However, designing, creating, and maintaining classical virtual machines or bare-metal still works for the majority of applications out there. DevOps engineers today have to deal with both worlds, multiple architectural patterns and different infrastructure environments.

Transferring the responsibility of running the application into the development team creates a lot of creative room for solving engineering challenges. Classical organizations would limit the tech stack (just use Java EE and Oracle databases) in order to reduce the amount of technologies managed by operations. When infrastructure is managed by the development team in form of infrastructure code, this infrastructure can change as fast as the requirements of the project change. This creative space allows selecting the best technology for a certain problem instead of solving all problems with the technology that already exists. A new architecture is just one build away and bringing innovation to life has never been easier.

DevOps and Motius, love at first sight

One of the reasons we adopted DevOps at Motius early is our innovative culture. We like to use latest technology and we love to bring products to life that use state of the art frameworks. In order to do this, we create applications including their infrastructure and provide our customers with ready to use solutions. And, because nowadays infrastructure is not a vague term, but coded DNA of a project, it is easy to transfer this between teams and even companies just by coding everything. Our most successful projects are the ones we take responsibility from design over code until operations. Once the tools are in place, iterating and changing applications becomes so much easier compared to classical operations management.

However, life is not all guns and roses. DevOps is still a trend, not the new standard. Many tools and processes have not yet adopted to this. One challenge we have right now is that debugging in a container infrastructure is not something that works out of the box. In order to enable this, we need to glue the tools we love to the new DevOps world. Process struggles are also typical symptoms, when adopting DevOps in your company. This movement challenges classical processes like performance management, as fast and small iterations often do not leave enough time for thorough analysis of software performance [8]. This often leads to finding and fixing performance bugs in production. Processes and tools evolve constantly and DevOps is a movement that won’t go away anytime soon. The current challenges are solvable and the good parts predominate the bad ones.

Getting started with DevOps

If you want to adopt DevOps, start with automating your delivery pipeline. This is a nice bridge between classical development and DevOps as it requires scripting your delivery rules and drives towards automation. A possible next step is to start scripting your infrastructure. You can start with one simple project. Don’t forget to think about monitoring at that stage. You probably have some infrastructure monitoring in place. This is a good opportunity to update your monitoring to the next level and implement application performance monitoring. Commercial and open source providers offer many tools for multiple technologies (Dynatrace [9], NewRelic [10], InspectIT [11], ELK-Stack [12], …). The data you collect there will not only help your DevOps to maintain the application, but the data you collect can improve your development and business decisions. DevOps can be a catalyst that improves not only your development but also your business decisions and embrace change and innovation.


Subscribe for your biweekly dose of tech and our raw opinion on the latest trends: http://tech-dosis.motius.de


Sources: 

Felix

Felix Willnecker is software engineer and researcher at fortiss, and Vice-Chair of the DevOps Performance Working Group of the SPEC organization. He worked in many industry and research projects as software and DevOps engineer, and loves to play around with new technologies since his first lines of code in QBasic.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.