Thursday, February 1, 2024

Database Performance Testing - Non functional Requirements gathering (NFR gathering)

When conducting Non-Functional Requirements (NFR) checks for database performance testing, consider the following questions:

1. Response Time: What is the expected response time for different types of queries and transactions?

2. Throughput: How many transactions or queries should the database handle per unit of time?

3. Concurrency: What level of concurrent users or transactions should the database support without degradation in performance?

4. Scalability: How well does the database scale with an increase in data volume, users, or transactions?

5. Resource Utilization: What are the acceptable levels of CPU, memory, and disk utilization for the database under different load scenarios?

6. Isolation Levels: How are isolation levels configured, and do they meet the application's requirements for consistency and performance?

7. Indexing Strategy: Is the indexing strategy optimized to improve query performance?

8. Data Partitioning: Are there effective data partitioning strategies in place to distribute data evenly and enhance performance?

9. Caching Mechanisms: Are caching mechanisms employed, and do they align with the performance requirements?

10. Backup and Recovery: How does the database perform during backup and recovery operations, and are they within acceptable time frames?

11. Data Archiving: Is there a strategy for archiving historical data, and how does it impact database performance?

12. Query Optimization: Have queries been optimized, and are there mechanisms in place to identify and address poorly performing queries?

13. Network Latency: How does network latency affect database performance, and what measures are in place to mitigate its impact?

14. Security Measures: How do security features, such as encryption and access controls, impact database performance?

15. Failover and Redundancy: How quickly can the database failover in case of a primary node failure, and what impact does this have on performance?

16. Data Purging and Retention: Is there a strategy for data purging, and how does it affect overall database performance?

17. Compliance Requirements: Does the database meet any regulatory or compliance requirements affecting performance?

18. Benchmarking: Have you benchmarked the database performance under realistic conditions to identify potential bottlenecks?

By addressing these questions, you can establish a comprehensive set of Non-Functional Requirements for your database performance testing.

Friday, January 19, 2024

SRE Insights - 11 Lessons for Tech Resilience



Google SRE Key Takeaways

1. Risk Assessment During Incidents:

- Monitor and evaluate incident severity.
- Choose mitigation paths commensurate with risk.
- Informed decisions during broken scenarios.

2. Practice Makes Perfect:

- Regularly practice recovery mechanisms.
- Verify effectiveness through testing.
- Double down on testing for improved reliability.

3. Canary Deployments for Global Changes:

- Implement global changes incrementally.
- Utilize progressive rollout strategies.
- Prevent unintended consequences with canary deployments.

4. Backup Communication Channels:

- Establish non-dependent backup channels.
- Ensure thorough testing of backup communication.
- Vital during unexpected incidents affecting primary channels.

5. Graceful Degradation for Continuous Functionality:

- Design systems for continuous minimum functionality.
- Provide a consistent user experience during degraded modes.
- Intentional and careful construction of degraded performance modes.

6. Disaster Resilience and Recovery Testing:

- Beyond unit and integration testing, prioritize resilience and recovery.
- Simulate extreme scenarios through tabletop exercises.
- Prepare for natural disasters or cyber-attacks.

7. Automated Mitigations for Faster Resolution:

- Automate mitigations for faster resolution.
- Swift responses to clear signals of failure.
- Minimize user impact through automated actions.

8. Frequent Rollouts for Safety:

- Conduct frequent rollouts with thorough testing.
- Reduce surprises through consistent testing.
- Ensure safety in complex, multi-component systems.

9. Diverse Infrastructure for Resilience:

- Maintain diverse infrastructure to prevent total outages.
- Mitigate latent bugs with diverse network backbones.
- The difference between a troublesome outage and a total one.

10. Reduce MTTR with Automated Measures:

- Automate mitigating measures during network failures.
- Clear signals trigger automated mitigation.
- Preserve root-cause analysis for user impact avoidance.

11. Timely Rollouts for Critical Functions:

- Avoid long delays between rollouts, especially in complex systems.
- Frequent rollouts with proper testing prevent critical function failures.
- Maintain diverse infrastructure to identify latent bugs.