You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It would be nice if we can have a way to tracking inter-components dependencies relationship.
Would be useful in the following cases:
Ensure dependents SLO never exceed the dependencies
I.e. if A depends on (B and C), and B and C each have the SLO of 99%, then A should not have the SLO exceeding 99^2 / 100 = 98.01
Circular dependency between services: Optional opt-out circular dependency detection. 2(or more) Services are circular dependents would have the same SLO which is the min SLO among them.
The text was updated successfully, but these errors were encountered:
In principle I think this is a great idea -- e.g. one could add commit/deploy time integration tests for things like #2.
That said, I think in practice for #1 this will be very situational and not sufficiently generalizable. At the very least, there's significant nuance to the interpretation of the nature of dependency and the relative impact of A on B. For example, if A depends on B, but A caches results from B for a specified freshness duration, what is the mathematical nature of the dependence of A on B?
For example, if A depends on B, but A caches results from B for a specified freshness duration, what is the mathematical nature of the dependence of A on B?
-- begin-thinking-out-loud
I think this is the common circuit breaker pattern yeah? In this example, it would often be wiser to think of A as 2 services: A1 and A2. A1 responsibility is to update the cache(C) from B while A2 serves the data from (C). The dependencies chain will looks something like:
B -> A1 -> C -> A2
A1 and A2 can be classified with different SLA/SLO and different error budgets.
What happen when B fail?
A1, C, and A2 are all operating under a partial degradation manner: A1 cannot extract real data to populate cache, C holding stale cache which could potentially evict, A2 could be serving stale data. You would not have the ability to scale A up/down, not having the ability to failover A to a new AZ or deploy a new version of A with fresh cache for canary purposes.
I think in term of SLO, this would be impactful, but in term of SLA, end-user might not notice any differences.
-- end-thinking-out-loud
But you are right though. The OpenSLO spec should be flexible enough to enable folks to customize the different weights of the dependency links up to the actual business / organizational requirements. 🤔
It would be nice if we can have a way to tracking inter-components dependencies relationship.
Would be useful in the following cases:
Ensure dependents SLO never exceed the dependencies
I.e. if A depends on (B and C), and B and C each have the SLO of 99%, then A should not have the SLO exceeding
99^2 / 100 = 98.01
Circular dependency between services: Optional opt-out circular dependency detection. 2(or more) Services are circular dependents would have the same SLO which is the min SLO among them.
The text was updated successfully, but these errors were encountered: