Replying to @coderbyheart

There is a better way to do it. Instead of a proxy, write a client service (is
that the right name?). A client service is a high-level abstraction of the
functionality and uses your domain language (👋 #DDD) and records user
intentions, and processes these actions out of band.

Fri, 09 Nov 2018 12:52:40 UTC

5 replies

Replying to @coderbyheart

This means that users will have immediate feedback when interacting with your
API for that service (202 Accepted) and don't have to wait for a slow third
party API.

Replying to @coderbyheart

The service will try to full-fill the intention in the background which provides
opportunity to implement retry-strategies and handle degraded service quality
gracefully. This also makes the rest of your system agnostic to the details of
that API (they use the client service).

Replying to @coderbyheart

State can be fetched from the third-party API regularly and in a controlled
manner. That means your users cannot hammer the third-party API with requests
and get you blocked.

Replying to @coderbyheart

As architects and engineers we need to not forget what software is great for,
and that our easy often means letting users do work which can be solved with
software.

Software has unlimited patience, users don't.