timsbiomed / issues

TIMS issue tracker.
https://github.com/orgs/timsbiomed/projects/9/views/1
1 stars 0 forks source link

Ensure adequate performance #27

Open joeflack4 opened 2 years ago

joeflack4 commented 2 years ago

Summary

Ensure that the server is performant.

Additional info

Helpful links

  1. https://github.com/FirelyTeam/Wind.Tunnel - A FHIR server stress tester.
chrisroederucdenver commented 2 years ago

That FireTeam WindTunnel is a cool find. I noticed they have a C# FHIR server too. These stress tests are basic gets and puts to the patient resource. It'd be great to crib their code and adapt it to operations on the terminology services.

Do we have an idea of what code systems we'd be serving? All the Monarch OBOs over time? just start with HPO? That's an element of the stress test we'd need to identify: how much data?

Do we have an idea of what user load we might have to serve? Not just how many concurrent users, but what would they be doing and how much of it?

It's fair to leave transitive closure off the table, but CodeSystem lookups, (simple) subsumes, and find-matches, ValueSet expand and ConceptMap translate are a place to start. You could even turn the question around and ask, not if a specific load can be managed, but how large a load makes the system crumble. The go in and find the weak spots. JPA ORM on an RDB leaves open tuning avenues that may or may not have been done.

joeflack4 commented 2 years ago

Hmm C#, cool. I've never written C# but what I've looked at previously looks more readable than Java IMO.

As for CodeSystems, take a look at the list for #4. Feel free to update if you see anything missing.

The other stuff, I'm not so sure yet but you bring up a lot of good points.

chrisroederucdenver commented 2 years ago

A starting point is to script some requests and see how slow it runs with a server loaded up with as many vocabularies as we have that day. Try running multiple scripts with different concepts to avoid a false sense of speed based on caching and see if it falls flat.