Inversion of control and dependency injection

This is a form Dependency Injection (DI). DI is where a service; for example, FaultTolerance, is passed to a dependent object--for instance, the client--where it is used.

This can also be considered Inversion of Control (IoC (DI is a subset of IoC). It's the director function that we pass into the LoadBalancing function that provides the flow of control. This determines which backend server to direct the request to.

IoC is a design principle where a framework determines the flow of control. Contrast that to procedural programming, where the custom code determines the application's flow of control in a predetermined manner.