-
Sub-task
-
Resolution: Done
-
L3 - Default
-
None
-
None
To achieve our target of preventing requests to the ingestion API impacting the performance of the rest of the API, we should investigate what options are possible.
Initial ideas are:
- separate embedded jetty server that serves just the ingestion endpoints
- dedicated thread pool and executor to serve just the ingestion endpoints
Summary:
- Separate Threadpooling on the existing jetty is not possible
- A separate jetty for the ingestion API is possible and would give us a lot of flexibility with configuration. The downsides are that there is little documentation, meaning that there is a higher risk of complexity and it's not completely clear if it would give us the benefit we are looking for. It would also require a lot of duplication of existing code in terms of setting up the server
- We also found that Jetty has a QOS filter, which sounds like it might serve our needs and in a less complex way. It gives requests priorities and serves them in this order in the event where request limits are reached. The downside would be that the ingestion API would not be configurable in the same way as a dedicated server would be (enabled/disabled, certificates etc.): https://www.eclipse.org/jetty/documentation/current/qos-filter.html