-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How should we encode our different instances in SmartAPI? #71
Comments
I recall having a discussion about this before, but cannot remember which meeting it was in. I thought the consensus was in line with how ARAX is doing it, with (dev) in the title. |
I suppose I lean towards having a single approach here. The variation is legal, but it's not terribly helpful. It seems as though there are 2 (interrelated) questions.
For the first, there will be times when we have to have more than one registration for different maturity servers (e.g. whenever those servers implement different versions of TRAPI). Given that, I think we should go ahead and say 1 instance per registration. For the titles, I honestly don't see much difference either way. The main point (IMO) of the registry is for computers to read, and those consumers should be paying no attention to this name: it is the infores+x-maturity that defines the registration, and should be used in discovery. If we're always having fully independent registrations for different x-maturity then having the name defined like {infores} ({x-maturity}) is fine, but I don't think it adds much. |
One of the two "MolePro development instances/environments" (i.e., https://molepro-trapi.ci.transltr.io/molepro/trapi/v1.2) is the first point in the ITRB Jenkins/Docker pipeline. As the "Continuous Integration (CI)" point, ideally ITRB's Jenkins continuously pulls code changes from GitHub while they happen into this environment and cascade the changes to Test and Production. The other "MolePro development instance/environment "(i.e., https://translator.broadinstitute.org/molepro/trapi/v1.2) is hosted by Broad Institute prior to and independently of the ITRB deployment process. Consequently, the codebase in the two instances are intended to be exactly the same. |
It would be good to document whether it is okay for there to be more than one instance of each of the different levels (i.e. can there be 2 prod servers, 3 test servers?) and what other actors should do when encountering several (e.g. can they just pick one and use it, or SHOULD they or MUST they fail over to other instances if one fails, or SHOULD they send queries to all and use whichever comes back first?). Or if the consensus is that actors can do whatever they want, that's fine, we should just be clear about it and document it. |
I learned on the Architecture call today that there are 3 levels: production, development, and staging. There was some disagreement on how development, staging, test, and ci are all related to each other. It should be clearly documented. |
All in all, "TRAPI development service for MolePro" maybe a misnomer for this site: https://molepro-trapi.ci.transltr.io/molepro/trapi/v1.2 because it is just ITRB's deployment mirror of this Broad Institute site: https://translator.broadinstitute.org/molepro/trapi/v1.2 |
Sounds like we have 4 environments: @newgene could we just have 4 x-maturity values, production, test, ci, development? Then they map very easily to the environments. For multiple servers per environment - is this a function that people want/need? Is anybody doing this or planning on doing this? |
Thank you, Chris, that perfectly encapsulates MolePro's order of progression: Not-ITRB, ITRB CI, ITRB Test, ITRB Prod. |
I would propose to use the following maturity terminology:
|
Yes, we can use four stages in
I actually don't know the difference between ITRB Test v.s. ITRB CI. If we need to swap the mappings, I am fine with it too.
|
I think we can register entries in smart-api.info according to TRAPI version (see https://github.com/NCATS-Tangerine/translator-api-registry/tree/master/molecular_data_provider). Right now we have same version thus we can have single specification file with multiple servers/maturity. When we get a new version, we register a new file and, as the API "matures", we will update server/maturity info in the new registration. |
At BTE, we are implementing this logic to select More details here at this issue: biothings/biothings_explorer#442 The basic logic is like this (e.g. for "production"):
Not sure if this fits your use cases, but post it here as a reference in case useful. |
So we have a few issues here:
1 seems like the one we don't seem to be converging on necessarily. I see 3 possibilities: A. One registration per infores/x-maturity 😄 I think any of these are workable. C is where we are now and it seems to work, but I can understand wanting something more rigid. Can I get a quick show of emojis on this comment for which others prefer? |
Excellent, seems like folks are in violent agreement. I've started a document to capture decisions here: I haven't really added enough details though. If anybody is excited and wants to expand it, please do. |
I communicated with ITRB team last week for the actual difference between ITRB-CI and ITRB-Test in terms of deployment process. This is the reply I got:
Based on this, I think we should adjust the mapping as:
Not sure if we still need "testing" as an official level, but people can use it for whatever extra developmental stage they need to use, as an optional stage. |
One of our homework items for Architecture was to get our SmartAPI registry entries for dev, prod, and CI all tidied up, but what should it look like? I see at least 3 ways of doing it in use. Shall we settle on one way to do it?
ARAX has two entries, one for prod and one for dev and one is titled "dev":
ARAGORN also has two entries, but they are on the face of it (by looking at titles) exactly the same:
(although deep inside the "Servers" tag is different.
BTE has a single entry:
but has all three prod, dev, and CI listed under servers:
which seems moderately pleasing and is 3 valued, whereas the first two actors have only 2 out of the 3 (CI is missing)
Shall we recommend one way to do it?
Or should clients have to deal with the variability?
The text was updated successfully, but these errors were encountered: