By Raghav K.
Almost every IT organization is making a shift to embrace DevOps. The opportunity of a considerable speed increase to the software development lifecycle and greater business agility is hard to pass. Streamlined and accelerated interactions between development and operations are simple when defined but a more complex structure when implemented.
This blog focuses on DevOps Team building. It will showcase different aspects of DevOps teams and why it is imperative to define teams and assign dedicated roles.
Is There a Quick Fix?
No. There are no shortcuts and no quick way to get there. There are no team building rules. There is no tool to help with DevOps team definitions. Organizations that try to make the shift by implementing a DevOps practice, ‘such as a plug and play model, are typically the organizations that fail.
A successful initiation to make the shift to DevOps starts with team definition. The correct set of people assigned with the DevOps role of their forte will help the organization take the first step towards rooting a successful DevOps practice.
The most skillful team members can fail to help a DevOps implementation if they lack collaboration. Also, hiring or re-assigning skillful members doesn’t necessarily guarantee a perfect practice.
DevOps Software Delivery
DevOps and its team have to be a mix of Developers, QA professionals, and Operations engineers. DevOps is a culture and practice. It cannot be contained within a set definition of team building and module bifurcation. DevOps is an approach to better builds and better workflow definitions. It is an endorsement of collaboration between different teams with different workloads.
Organizations implementing DevOps might run into issues with team exercises. These problems could be with reverse team bonding. Reverse team bonding is a term I learned from a DevOps expert. It defines where the responsibility of a specific team ends and where the responsibility of another team begins. In other words, the developer team cannot be finished with an application code as soon as they pass it along the pipeline to a tester.
The solution is to change the approach you take for software delivery and integrate (crossover) roles within these four core DevOps stages:
1. Infrastructure as Code (IaC)
Alibaba Cloud IAC is a server environment that provides a complete server backend to facilitate deployment. Alibaba Cloud IAC works with Terraform that enables the user to adjust resources depending on usage. Auto Scaling can also be implemented for automating resource scaling. IAC can be reused multiple times at different stages of the DevOps practice. It could be for testing or building the code, sandboxing, or maintaining the application in a production environment.
2. Continuous Integration (CI)
Depending on the metrics collection and user feedback, new features or improvements are constantly integrated into the application. These form new versions or iterations of the application. The Alibaba Cloud CI-CD pipeline provides support for version control and instant rollbacks.
3. Continuous Delivery (CD)
Continuous Delivery pipelines ensure that automatic delivery is not hampered throughout the practice, and all the required resources are provisioned automatically. The application is pushed into production as soon as the testing is completed. This process is completed without any manual interception of the process and doesn’t interrupt the end-user experience.
4. Microservices — Containers
No downtime is achieved by implementing Alibaba Cloud Microservices using the Container Service for Kubernetes (ACK). Microservices have provided the functionality where inter-dependability is now non-existent. When modules (microservices) will not depend on each other and with containers, most of the configuration and operational details are integrated. Changes to one module will not affect another.
What Have We Learned?
Now that we have an outline of the four major contenders within the DevOps pipeline, let’s discuss which roles and practices can crossover.
The Application Developer Team writes the app code. The Operations Team writes code for infrastructure provisioning, unlike the developer team that wrote the application code. When it comes to the QA process, developers make the best QA specialists. Developers write the application code and are equipped to understand and test the app code.
DevSecOps defines the standardization of security practices in a DevOps practice from a grassroots level. In this role of a security expert, a developer, tester, and an administrator can make a crossover.
The Operations Engineer has to facilitate a seamless delivery process while making sure the infrastructure can handle any loads presented. An administrator crossover can be seen here. DevOps is not only parallel practices, but it is about defining leadership roles.
IT leadership of an organization should constitute a team based on a specific skillset. There are at least eight separate roles within a DevOps Team system:
- DevOps Evangelist
- Release Manager
- Automation Architect
- System Administrator
- Software Developer
- Software Tester
- QA Professional
- Security Architect
IT leadership can invent and add new professional roles based on how their DevOps environment is evolving. This evolution has made way for Continuous Automation and DevSecOps. Both of these practices need sandboxing for proper implementation. So, three new roles can be added to the eight pre-defined roles above:
- DevSecOps Professional
- Continuous Automation Engineer
- Sandboxing Engineer
The initial definition of DevOps was suggested back in the days when DevOps was the practice that reflected major changes to team building and process management, moving away from the traditional style of development to deployment operations. During that time, no specific or recommended team composition was defined. There were no pre-assigned individual member roles or responsibilities, and there was no guideline to manage the practice of using or not using a certain team. It was only Dev + Ops.
The common perception of the DevOps workflow was that the practice should combine the Developer, QA professionals, and Operations professionals into a single team and share their roles and responsibilities to undergo practice diversity.
Teaching each other the methodologies of their part of DevOps and learning to use the tools dedicated for Dev or Ops was the ultimate magic that unwound DevOps. Unfortunately, this wasn’t the case. DevOps doesn’t only run on tools; it runs a perfect sync between teams. The tools are there to provide an immersive experience.
Shift to the Left
This approach suggests that all kinds of testing are done after sending in new or updated code to production before you start to build another new software version. A combined effort should be made to access how an application might behave in the real world before it is coded. Proper configuration of CI-CD pipelines for faster time-to-production and inclusion of security practices from the start of SDLC will ensure a good end-user experience.
Some of the common DevOps roles are defined below:
- DevOps Evangelist
A DevOps Evangelist is someone that understands how the application should behave in the real world and what benefits can it bring to the users. An evangelist has to be someone that can be a crossover from the organization to the client side, with a clear idea of the cloud infrastructure and its use cases by industry.
- Team Administrator
Assigning responsibilities and tasks for proper execution within a team is the base responsibility of a team administrator. A unique skill set is required for this position, which includes developer and administrator qualities.
- Cloud Architect
Some readers may remember The Architect character from The Matrix film series. Similarly, a cloud architect must orchestrate situational and operational capability-based resource handling. The cloud architecture must know the ins and outs of the system before any real-world application.
- Sandboxing Engineer
A Sandboxing Engineers is a DevOps specialist that can ensure stable performance and uninterrupted availability of an application during high-load situations testing the applications on scenario-based systems.
- DevOps System Administrator
This key DevOps role includes monitoring and managing cloud resources. A DevOps Administrator must shift tasks and make changes depending on demand and resource usage.
- DevSecOps Professional
A developer, tester, or security expert can fill in this position to integrate security measures from a grassroots level of the DevOps practice. You can check this article if you would like to learn more.
In the End — What Matters?
DevOps Team Building is as important as maintaining a healthy system. Imagine someone driving a car in a rally without a navigator or a ground crew to manage operations. Task assignment must suit the expertise of a team and team members. This is the real-world DevOps team composition that focuses on how things work on the ground level and not on paper. Maintaining a practice based on this type of team composition will lead to a successful DevOps practice.
- Six Ways to Balance Productivity and Creative Outreach — Digital Transformation