0

I want to make a web service that is highly reliable to a third-party web service. The high reliability here means any single request from the third-party web service will be successfully processed by my web service. The third-party service doesn't have a retry mechanism on a failed request nor can it change its request format (a http POST with fields and values in the body).

I am not considering a fail-over solution such as multiple nodes behind a load balancer meets the requirements because one node may fail and load balancer may still route a request to it before its removed from the pool.

I am considering using something like Amazon SQS that receives the request from third-party request and passes it onto my web service because SQS has a retry mechanism. However, the difficulties here is SQS seems requires the content to be filled in the "Message" parameter and this cannot be achieved by the third party service.

Could there be a solution?

James Chen
  • 21
  • 1

2 Answers2

1

The only real solution to ensure completion of a request that I can think of is to add a wrapper to the third-party web service so that it DOES have a retry mechanism. Any other solution including HA will have a point of failure. Consider that if the Amazon SQS service fails, you will still have a third party web service that will request information from the down service and fail.

1

I am not considering a fail-over solution such as multiple nodes behind a load balancer meets the requirements because one node may fail and load balancer may still route a request to it before its removed from the pool.

What do you think the architecture of SQS looks like. They have front ends behind load balancers. If a front end fails then those requests will fail. SQS is still high availability because if you retry the request, it will likely succeed. To avoid showing errors to users, you should build in retries on the client side.

tster
  • 17,883
  • 5
  • 53
  • 72