Updated on 2025-05-22 GMT+08:00

RES08-01 Reducing Strong Dependencies

If system components strongly depend on each other, a fault in one component will directly affect other components, affecting system availability.

  • Risk level

    Medium

  • Key strategies

    Reduce dependencies using the following methods:

    • Select a higher redundancy level for critical dependencies to increase the availability of critical components.
    • Use asynchronous communication and retries upon timeouts for dependencies, or use the publish–subscribe pattern to separate requests from responses, so that dependencies can recover from short-term failures.
    • Ensure applications can continue to function when its dependencies cannot be accessed for a long time. This minimizes the impacts of partial faults on the overall system functions. For example, if the data that an application depends on is lost, the application can still run and maintain a predictable and recoverable state although the data is slightly outdated, alternative data is used, or even there is no data.
    • Avoid startup dependencies and circular dependencies. When an application system that depends on dependencies to start or load key configuration data is restarted due to certain reasons, it may be in the startup state for a long time and cannot respond to external requests. In this case, the application system should start with the default configuration data, and then check the statuses of dependencies, or load the latest configuration data to recover itself.