In my last two articles I described DevOps and introduced Azure DevOps, Microsoft’s platform designed to help maintain DevOps best practices. In this last article I go over how we at Predica follow these practices and benefit from them. If you want to learn more about how DevOps works for us, then read on!
If you missed my previous blog posts about DevOps, I encourage you to check them out:
- What is DevOps and why it is crucial for the organization’s success
- Azure DevOps as a Central Hub for Managing DevOps Best Practices
Before I get into DevOps, I want to touch on our culture. Ownership, persistence and transparency are our core values. These are the values that each of our Project Owners lives by. In fact, the role of a Project Owner at Predica has two main responsibilities: to collaborate with development teams and maintain a high degree of service quality, and to remove any obstacles that stand in the way of delivery. The role plays an essential part of a DevOps-driven service model.
The “Predica Agile” Framework
“Predica Agile” is our in-house framework that ensures a standardized and efficient approach to managing projects. It also helps us to achieve the following:
- a standardized approach to service delivery, in the form of best practices, which are continually being shared and developed. (More detail on this in the Predica DevOps Center of Excellence section, further in the article)
- reporting and project KPIs are aligned with our approach. This, in turn, helps us to quickly compare, assess and communicate project status. (For this, we use Power BI along with the Azure DevOps backlog.)
- employees are able to flow between projects and dedicated engineer/team with little ramp-up and disruption:
We utilize the Product Backlog and have our delivery team work in sprints. This way, our development team has a clear plan for what to do each week and Project Owners can easily track their progress:
Predica DevOps Center of Excellence
What is DevOps Center of Excellence at Predica?
Our DevOps Center of Excellence is a dedicated team responsible for managing DevOps best practices across our organization. We publish our processes, standards and best practices on a Wiki page in Azure DevOps project. There, we gather information on the following:
- Backlog definition
- Dashboards and Metrics
- Version Control
- Branching strategy
- Branch policies
- Build pipelines
- Release pipelines
The above sections contain various standardization details. For instance, in “branching policies” you can find the following:
- Direct merge to master – forbidden
- Linked work items for each branch
- At least one reviewer
- Reset code reviewer votes when there are new changes
- Description what was changed
Each part of our standardization has its own description related to DevOps practices.
Azure DevOps from a Project Owner’s perspective
Project Owners are responsible for both tracking progress and managing the customer. Once we collect requirements, a Project Owner creates a Product Backlog. This is where we keep all requirements and features for any given solution. After that, she or he coordinates the sprint planning process, where we prioritize the features that we will deliver in the upcoming sprint.
Each project has a dashboard configured to display project statistics:
Azure DevOps from the Development Team perspective
Our development team uses Azure DevOps to report work progress on assigned tasks. I mentioned in my previous article that Azure DevOps contains repositories for source code. Once we develop a new feature, the Development Team member creates pull requests so that other members can review the changes and provide feedback.
Besides code reviews, Development Team also use Azure DevOps Pipelines to automate application builds and releases. This way, our test teams always have a fresh build to work with.
Team collaboration using Azure DevOps
Our main collaboration and communication tool used by both Project Owners and development teams is Microsoft Teams. Let’s go over a few best practices that we have adopted at Predica with respect to both DevOps and Microsoft Teams:
We organize our status meetings in Microsoft Teams. During each meeting the development team shares what they have completed, what they are working on, and current obstacles. We can also display the current sprint directly from Azure DevOps for everyone to see and discuss.
Additional information about project health
We can display project stats in both Azure DevOps, as well as Microsoft Teams. We leverage an integration with Microsoft Teams to access project health data right within the app. There are several channels with project data: we have a build channel that shows build statuses with dates, and a bugs channel that lists reported issues/defects.
As you can see, there are a lot of great features in the Azure DevOps to help maintain DevOps best practices. We touched on just a few of them: team collaboration, deployment automation and version control. Our DevOps Center of Excellence promotes best practices and standards, and every member has a chance to contribute to it. In summary, DevOps is the combination of cultural philosophies, practices, and tools. And that’s exactly how we apply it here, at Predica!
I have also good news for you! During the upcoming webinar that I have the pleasure to co-host with Tomasz, Predica’s CTO, we will show you how to leverage the many best practices of DevOps along with governance processes to succeed in the cloud just as we do it at Predica!