แนวคิดหลัก
Microservice applications rely heavily on databases, and ensuring their resilience during database disruptions is crucial. This work introduces a tool that systematically simulates database disruptions, enabling comprehensive testing and evaluation of application resilience.
บทคัดย่อ
The content discusses the development of a tool for injecting faults into the database clients within microservice applications, without manipulating the actual database. The tool is built as an extension to Filibuster, an existing tool for fault injection in services.
The key features of the tool include:
- Instrumentation for diverse database systems, including SQL and NoSQL databases.
- Support for both synchronous and asynchronous database APIs.
- Customizable Byzantine faults to simulate scenarios where the database returns corrupted data.
- Injection of realistic exceptions that mimic the actual exceptions defined in the database documentation.
The tool integrates with Filibuster's IDE plugin, providing developers with a visual approach to view the injected faults and their impact on the application. The dynamic proxy interceptor used in the tool allows for generic instrumentation of database clients, enabling future support for additional database systems.
The authors have evaluated the tool on a real-world microservice application and found it successful in replicating database failure conditions that had historically caused application outages. This emphasizes the significance of fault injection as a preventive measure in ensuring system resilience.
สถิติ
The software development landscape has witnessed a recent profound shift towards microservice architecture.
Microservice applications are typically composed of multiple services and their corresponding databases.
Nearly half of the microservice applications rely on databases.
คำพูด
"While there are several tools available for fault injection, including ChaosMesh, Gremlin's ALFI, Litmus, RainMaker, and Filibuster, their primary focus is on introducing faults into services. However, underexplored remains fault injection that targets the database clients within the microservice applications."
"Developers have limited options when it comes to testing the resilience of their applications with databases running outside of containers."