Estou atrasado para a festa aqui; mas eu tenho algo para contribuir ...
Cal Henderson fala (brevemente) sobre os problemas que você está enfrentando em seu livro Building Scalable Websites . Você deve ler o capítulo sobre APIs de serviço da web.
Como o cavalete aponta corretamente, o cache de proxy reverso normalmente não oferece muito benefício para uma API.
Duas coisas que beneficiarão você são:
- Um cache de valor-chave distribuído para os dados com os quais você está trabalhando. Ou seja você pode armazenar em cache seus hot dados em seu formato de objeto nativo de plataformas, ou como matrizes serializadas simples ou qualquer outra coisa que seja rápida para sua plataforma. Isso limita o número de acessos ao seu banco de dados, onde você terá seus piores problemas de dimensionamento. Seus servidores de API ainda precisarão recuperar quaisquer conjuntos de dados não armazenados em cache e serializar a resposta, mas pelo menos a parte de serialização será vinculada apenas à CPU e poderá ser dimensionada com facilidade.
- Algum tipo de sistema de limitação de taxa, ou seja, a capacidade de limitar ou negar clientes que estão fazendo muitas solicitações. Normalmente, as chamadas de API envolvem processamento bastante pesado em seus servidores (conforme eles leem ou manipulam dados brutos), portanto, proteger-se contra clientes mal escritos faz sentido.
Além do acima, o Cal Henderson sugere a criação de bibliotecas cliente de software livre em idiomas populares e a colocação de práticas recomendadas nessas (ou seja, armazenamento em cache no lado do cliente, limitação de taxa). Desta forma, os desenvolvedores de terceiros terão uma plataforma de código fácil e compatível para reutilizar e desenvolver. A idéia parece ótimo IMHO, mas também um pouco caro.