REST API Performance Tips

The need to improve the performance of a specific endpoint of a REST API happens very often, here I present to you some tips that can help you to improve the performance of your REST API:

Verify the time consumed on the endpoint

Execute the request and verify how much time it is taking. Personally, I think that if the requests take more than 300ms then I should take a look at it and try to improve it if it’s worthy.

Asynchronous code

Identify the task(s) that are taking more time to finish. If you have more than one time-consuming task on your endpoint try to execute them in parallel to save time. Try to avoid executing big time-consuming tasks synchronously.

Send only the data that will be used by the client

Verify that I’m only sending just the data that the client will consume. Two things to apply are:

  1. Consider paginating the results if they are too much.
  2. Return just the necessary fields, i.e.: if we should return a list of employees from DB maybe we just need to return the name and department and not the age, birthday and other things. You can provide a fields” param on the endpoint when the client can specify what fields he wants to retrieve.

Compress your Response

You can compress your response using for example Gzip. That will allow you to save bandwidth and of course response time.

Use Cache whenever possible

If it is reasonable cache the whole endpoint response. If your backend is executing a time consuming task to gather some data back consider to use a cache there so you don’t have to execute that expensive task all the time, that way you just have to execute it when you consider that an acceptable amount of time has passed and the expensive task should be consumed again to maintain the data updated on the cache.

Horizontal Scalability.

Put your server behind a reverse proxy (i.e. Nginx) so you can easily apply horizontal scalability, that means that you can add more server instances. i.e.: if you are receiving 1000 requests on a single server if you add one more the reverse proxy server will balance the load between servers and now each one will receive 500 requests.

Vertical Scalability

Add more RAM or CPU to your server instance.