Editor's Note: In this three-part series of articles, we look at various approaches to database monitoring that can improve app performance and availability, online customer experience, and engineering and development team productivity. In this final article, we address how proactive monitoring can impact engineering and development team productivity.
Kelsey Uebelhor is Director of Product Marketing at VividCortex.
Team performance often comes down to good communication and the proper use of specialization. For DBAs, engineers, and developers, effective communication and access to information keeps everyone on the same page, from initial issue identification to after-action knowledge sharing.
Specialization within a team is often necessary, as each member offers complementary skillsets that help smooth hand-offs as work moves through the process. But specialization can also create silos. In fact, the DevOps approach was developed to improve this process, to knock down silos and create better collaboration. You find this type of collaboration at work whenever a developer pushes code loaded with new database queries and the DBA load tests and troubleshoots the new release. Each player is bringing their skills and knowledge to the task of shipping faster, more stable applications.
However, in virtually any team context, from professional sports to DevOps teams, wherever you find segmented and highly specialized resources combined with poor communication and collaboration, you are likely to find subpar productivity. Given the unique role databases and DBAs play in your software development process, you need to pay close attention to the degree of specialization within your team, the level of communication, and what role metrics can play in identifying and overcoming barriers to better productivity. As a cohesive team, everyone is responsible for better performance, and database monitoring can bring the team together based on a better understanding of shared responsibilities and results.
In your typical software development environment, developers are focused on generating new features as quickly as possible, while DBAs are focused on service availability and meeting the system performance demands of the business. Their tasks are segmented and assigned based on the specific knowledge and skills of each team member. DBAs, for example, have experience that others on the team may not have: designing, building, and maintaining scalable database servers. The downside to this approach is that by encouraging specialization, you then create a dependency on that specialist that, as you scale, can create bottlenecks and drive down team productivity. This situation is unique for DBAs, as they are involved in multiple handoffs, interactions, and information sharing between different teams. Their duties and knowledge are specialized, so it’s tempting to centralize the burden on them instead of sharing or offloading it with developers.
A better approach is to create a more collaborative relationship between developers and DBAs that encourages sharing responsibilities, rather than having stark demarcations between them. To address this, you could consider implementing a DevOps approach to software development that encourages collaboration or hiring full-stack developers with broader skills. Regardless of whether you go down either of these paths, an essential first step is to start knowledge sharing between the DBAs and developers that will lead to a common understanding of each other’s roles in the process. This helps pave the way for greater sharing of tasks and responsibilities in the future. Performance monitoring is a great place to start when looking at opportunities for overlapping responsibilities and knowledge sharing, as all parties are ultimately responsible for system performance.
In the fast paced, dynamic, and highly interdependent world that is software development, strong team communication is essential as a single misunderstanding can have potentially catastrophic consequences. Clear and unambiguous communication between developers and DBAs helps to maintain the tight coordination necessary to keep teams and systems running at peak efficiency. Constant vigilance, as continual code releases in production require issues to be quickly discovered and resolved, prevents slowdowns or major outages.
For optimal team productivity, there are two major elements of communication you need to think about: timeliness and quality. And just as with specialization, you need to strike the proper balance. In this case, you need the appropriate frequency so that the right people are constantly aware but not overwhelmed, and sufficient quality such that the information shared is informative and actionable. Without this balance, teams create a lot of noise, making more work for themselves as they comb through endless messages and alerts that don’t provide any meaningful information.
Improve Timeliness with Alerts
System alerts are an important feature of any application or database monitoring solution, but sometimes you can have too much of a good thing. You need to be able to fine tune your alerts using event-based triggers as well as thresholds to control the frequency. Also, developers and DBAs should be able to set and monitor their own alerts to help share the monitoring burden and improve time-to-response when issues arise. Monitoring should not be just a DBA responsibility.
Better Quality with Metrics
Improving the quality of communication means more depth and proper context that help all parties better understand issues as they arise. You need to be able to view trends and patterns to spot anomalies based on time-series data. By sharing screenshots of charts, comparing multiple graphs to find correlations, and drilling down to investigate and isolate issues, DBAs and developers can have more fruitful collaboration based on metrics-driven conversations.
Teams work better with frequent, high-quality communication and the right mix of skills working in concert. To find productivity improvements, you should take a close look at the skill segmentation on your DBA, engineering, and development teams. See if specialization may be creating bottlenecks and whether team communication is metrics-driven and insightful, or noisy and counterproductive. By tackling these two issues you can achieve tighter collaboration between developers and DBAs, and create a more cohesive and productive team that has a better understanding of shared responsibilities and results.
Opinions expressed in the article above do not necessarily reflect the opinions of Data Center Knowledge and Penton.