Check determining whether an application has started.

Proxy receiving requests on behalf of backend servers.

Increasing retry delays after failures.

Maintaining a connection for repeated communication.

Gradual replacement of application instances.

Proxy acting on behalf of clients.

Random variation added to timing intervals.

Maximum time allowed to establish a connection.

Deployment using separate old and new environments.

Directing requests to selected destinations.