There were some good comments last week on TechCrunch on the pros and cons of using a proxy for analytics and protection (or any operational or business policy) on your API.
Biggest concerns discussed were: latency, single-point-of-failure, and loss-of-control. All great points.
We wanted to talk about latency first. (and address the other two in a later post.)
A proxy definitely adds latency. Both for the additional server hop and processing time of the proxy software. So any proxy needs to minimize latency and add enough value (capability, time-to-market, etc.) to justify this extra hop.
Our conservative estimate for Apigee is to expect 200-400 ms of latency. This is mostly due to the extra hop and includes the 20-40 ms of latency due to Apigee's proxy 'think time.' (More detail our latency FAQ)
Your mileage might vary based on message size, the policies you are enforcing, and where you are hosted. For example, our estimates are based on a 5K message size. If you proxy Twitter with it's small messaages, your latency will likely be less, and if you are processing big message sizes (such as inserting ads into email), it will likely be higher.
Test it yourself
Soon we'll introduce a tool to test your Apigee proxy's latency during the proxy setup process. In the meantime, you can test this yourself with Apache Workbench (or cURL) by:
1. Set up your Apigee proxy (or feel free to use my Yahoo Local API proxy in the steps below)
2. Open up a terminal.
3. Run a *before* test - get the latency *without* apigee. Run this Apache Workbench command (for 10 test requests).
For this example, I'm using the Yahoo Local API's example API methods.
ab -n 10 http://local.yahooapis.com/LocalSearchService/V3/localSearch?appid=YahooDemo&query=pizza&zip=94708&results=2
(This is an apache workbench command where -n 10 specifies 10 iterations)
You should get a results set in this format (where the "10" was for running the test 10 times).

So you can see - just hitting Yahoo Local without a proxy I get a latency of 250ms for all 10 requests.
4. Next, I get the latency *with* Apigee using my Apigee proxy URL. (Feel free to use this URL yourself, don't worry, I rate limited it in Apigee)
ab -n 10 http://yahoo-local-1.apigee.com/LocalSearchService/V3/localSearch?appid=YahooDemo&query=pizza&zip=23662&results=2
In this case my results are:

In this case, my longest response with Apigee is 357ms.
5. Subtract (3) from (4) and there is your approximate latency for the proxy. Here the latency was roughly 357 ms - 250 ms = 107 ms for my 10 requests, on my verizon card outside Berkeley's Cafe Roma. (thanks to Yahoo Local's great API for the recommendation.)
Run this a couple times to make sure your responses are consistent, and also mixing up your API query parameters so you don't accidentally compare a cached vs non-cached response time. For example, I changed zip codes in my Yahoo Local requests.