Co-Pilot for DB Ops - User Stories and Personas

Co-Pilot for DB Ops - User Stories and Personas

·

4 min read

TLDR

🗺
In this series of posts I'll write about a long journey to build a Co-Pilot for DB Operations.

In the first post I wrote about what is a Co-Pilot for DB Ops, the main motivation and the guidelines for building the tool. In this post I want to add some examples what this tool should actually do.

User stories and personas

The cornerstone of a successful product lies in identifying its personas and user stories. It involves understanding who will utilize the product, what their characteristics are, and how they will engage with it. Additionally, it entails comprehending the problems they face and how the product will address those challenges.

We'll begin by identifying two personas:

1. DevOps Engineer at a large organization - Managing 200 PostgreSQL Servers

Background: The DevOps engineer oversees a large infrastructure with 200 PostgreSQL servers. They are responsible for ensuring the smooth operation of these databases to support various applications and services within their organization.Proficient in DevOps practices and tools, the DevOps engineer has implemented Prometheus and Grafana for high-level monitoring of their infrastructure. However, their understanding of database internals is limited, especially when it comes to optimizing database performance and troubleshooting complex issues.

Challenges: Managing such a large number of databases can be overwhelming, particularly when faced with performance bottlenecks, scalability concerns, or unexpected downtime. DevOps Dynamo struggles to efficiently diagnose and resolve database-related issues due to their lack of in-depth knowledge about database internals.

2. Senior Developer - Owning Production Databases for 4 Microservices

Background: The Senior Developer is responsible for the production databases of four microservices within their organization. They play a critical role in ensuring the reliability, performance, and security of these databases to support the smooth operation of their microservices. As a seasoned developer, the Senior Developer possesses a strong understanding of software development principles and practices. They are proficient in building and maintaining microservices but may lack specialized expertise in database administration.

Challenges: Managing production databases for multiple microservices introduces complexities related to schema design, query optimization, and data consistency. The Senior Developer faces challenges in effectively tuning database performance and ensuring optimal resource utilization without extensive knowledge of database internals.

By addressing the needs and challenges of these personas, DB Ops Co-pilot can effectively cater to a diverse range of users with varying levels of expertise in database management and optimization.

User stories

As a DevOps engineer, I want to

  • View the top queries running on the database, so I can identify performance bottlenecks and optimize query execution.
  • Monitor the size of the database and every table within it, so I can manage storage resources effectively and plan for scalability.

  • Track the usage of a table by monitoring the number of reads and writes it receives, so I can optimize database performance and ensure efficient resource allocation.

  • Analyze the usage of indexes and identify which indexes are not being utilized, so I can optimize database performance by removing unnecessary indexes and improving query execution speed.

  • Assess whether the database configuration is optimized for performance and security, so I can make necessary adjustments to improve overall database health.

  • Access the current configuration and view recent changes made to the database, so I can understand the database environment and troubleshoot issues effectively.

  • Monitor memory usage and identify which databases or tables consume the most buffer cache, so I can optimize memory allocation and improve overall database performance.

    Configure and analyze the query log, so I can track query performance trends, identify inefficiencies, and optimize database operations for better application performance.

  • Configure an alert in AWS CloudWatch based on specific database metrics, so I can receive notifications about potential issues and take timely action to prevent downtime or performance degradation.

    Compare schemas between database instances or versions, so I can identify differences and ensure consistency across environments.

  • Analyze the schema of tables and identify violations of best practices, such as missing primary keys or inefficient data types, so I can optimize database design and improve performance and maintainability.

In simple terms, DB Ops Co-pilot will handle technical tasks like optimizing database settings, setting up alerts in AWS CloudWatch, checking and comparing database structures, and ensuring best practices are followed. The examples provided above are just a glimpse of the extensive list of functionalities DB Ops Co-pilot is expected to offer.

Developers won't need to worry about complex details like system tables or external tools. They can focus on managing databases effectively.

Next on the agenda: testing the OpenAI API.

Spoiler alert: the results aren't promising.

Â