-
Notifications
You must be signed in to change notification settings - Fork 7
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
Migrate existing pieces to new pluggable component architecture, part 1 clean up the unused pieces #214
Comments
Hi @tlvu. I'm working on rethinking the deployment strategy for DACCS/PAVICS over at UofT. Do you mind if I take over this issue as well as the other "Migrate existing pieces to new pluggable component architecture" issues in this repository? |
@mishaschwartz not at all. Please let me know if you need any further info. You can see the pluggable component architectures already in place for new The plan is to break out all the currently enabled components by default the same way. The tricky part is to keep backward compatibility with the current default when user do not specify any extra components. The other tricky part is inter-dependencies between the various components. New WPS services (birds) are self-contained with their own DB (ex: https://github.com/bird-house/birdhouse-deploy/tree/master/birdhouse/optional-components/generic_bird), but all current WPS services (Finch, Raven, Hummingbird, ...) all share the same DB ! There are also some tightly coupled components, ex: Twitcher and Magpie. These 2 versions have to always match and they probably do not make sense to exist as separate components, ex: activating Magpie alone without Twitcher make a little sense. There are currently 3 PAVICS deployments: Ouranos, CRIM and PCIC. I will tag the persons responsible for CRIM and PCIC below. Please share your thoughts and code change early with us so we can plan the upgrade path on our side. Ideally all changes are small, incremental and backward compatible so upgrade is painless. For sure this is not 100% possible so we have a find a middle ground. I intentionally break the task into many smaller parts to hopefully make it small and incremental. Note there is an open PR #287 that removes unused components, could be used to implement this part 1. @matprov (CRIM) @eyvorchuk (PCIC) |
If at some part, we can not maintain backward compat, then we could also include a small change that has a big compatibility impact: remove the |
@mishaschwartz There is a way to spin up a Jenkins pre-configured to test this PAVICS stack, see https://github.com/bird-house/birdhouse-deploy/blob/master/birdhouse/README.rst#optional-prepare-instance-to-run-automated-end-to-end-test-suite |
@tlvu thanks for all that info! As far as backwards compatibility, our eventual goal is to transform the PAVICS platform to be a node in a larger network of similar nodes (the DACCS project). This might, and probably should, require us to break backwards compatibility with the current PAVICS stack at some point. Another issue that we currently have is that we currently don't have a server over at UofT to spin up an instance of PAVICS for staging or testing. What do you currently do when you're developing the project? Do you spin up an instance in a vagrant VM locally on your own laptop or is there a friendlier development environment that you use? |
@mishaschwartz Agreed, 100% back compat is impossible. The way I see this is, this task is broken up in many parts, some parts can be back compat and some can not. Each part should go-live incrementally so we do not have a big bang style of go-live with all the risks and stress associated. So for the parts we can not maintain back compat, let's try to group all the broken changes together so the number of not back compat go-live is not too often and not too big to ease the upgrade path. We can broke this effort into even smaller parts if it helps make the upgrade path smoother. Can you elaborate about "a node in a larger network of similar nodes (the DACCS project)"? Currently, I think it is already possible. Any scripts can talk to any WPS services, and those WPS services do not have to be from the same server. Also all data via Thredds and Geoserver are also available for all WPS services, not just the WPS services locally on the same server. This is possible because we use standards (WPS, WMS, OpenDAP, ...) as our "interface" between the various components. As for my test environment, I have several Vagrant VM so I can work simultaneously between different PR, vagrant instruction here https://github.com/bird-house/birdhouse-deploy/blob/master/birdhouse/README.rst#vagrant-instructions You would need a rather beefy machine to run that Vagrant VM. Give the VM at least 100G disk and 12G ram, but the more the better. My various VMs are on my workstation at work, not on my laptop. I never got self-signed SSL cert to work so your VM need to be in a DMZ so you can open port 80 and 443 for LetsEncrypt SSL cert to work. Jenkins have the ability to target a specific hostname so you can have many instances of PAVICS but you only need one instance of Jenkins. Let me know if you need any further help to get started with setting up your environment. We can video conference at some point. |
The goal is to make PAVICS/DACCS work similarly to how ESGF sets up their nodes (https://esgf.llnl.gov/node-design.html). So, yes the services are all visible and usable no matter which server they're actually running on; but a user still needs to know where each service is available in order to know which URL to point to. In the DACCS network, each node is aware of which services, data, etc. each other node is hosting which makes it much easier for a user to discover tools and data that fits their needs. Whether the service/data is hosted on the current node or another node somewhere else in the network. |
@mishaschwartz I understand now! Eager to see your take on this interesting feature. |
Forgot to say, this means you will also need DHCP reservation so your VM have a specific hostname for the LetsEncrypt cert to be associated to. |
Other PR removing unused components, related to this issue: #292, #291 @mishaschwartz Once you get your PAVICS VM and Jenkins up and running, testing for those PR will let you fully exercice your setup. Let me know if you need help for anything. |
Can we also remove the following directory |
Not used somewhere as far as I know. |
@eyvorchuk do you know anyone on PCIC side use Phoenix? Can we remove it from the stack as part of this effort? |
I haven't used it so far, but I'll check with my supervisor. |
@eyvorchuk any word on whether phoenix is being used at PCIC? |
I believe we use it for a few of our birds for logging purposes, but I don't know if this is necessary. |
@eyvorchuk Ok why don't we keep it in the stack for now. We may eventually decide to remove it though so if there is another way to do the logging it may be worth looking into. What sort of logging info are you getting from phoenix (I wonder if that info is easily available elsewhere)? |
I've just been going off of comments from my predecessor, so I haven't actually personally used phoenix. How would I figure out where it's being used? |
@eyvorchuk My best guess would be to look for any monitoring/logging scripts that are looking at port 8443. Another option would be to stop it running with @tlvu do you have any other suggestions for how to check this? |
@eyvorchuk If it is to get @mishaschwartz FYI the CCDP stack is the duplicated stack with PAVICS but having only Finch and Weaver. Hopefully with your modular change, CRIM will be able to use the PAVICS stack and even re-integrate/merge their improvements (ex: this logs monitoring) back into PAVICS stack. |
Just did some runs of the birds with and without |
Not sure I can answer this since I do not use Phoenix. But my understanding is Phoenix act as a web client for the various WPS birds, allowing you to craft WPS calls without writing raw XML. This is the same as This is an example of our notebook using Documentation about Not sure if |
## Overview Move unused and unmaintained components to a separate `deprecated-components/` subdirectory and remove them from the DEFAULT_CONF_DIRS list if required. ## Changes **Non-breaking changes** **Breaking changes** - The following components are no longer present by default: - catalog - frontend - malleefowl - ncops - ncwms2 - project-api - solr - phoenix ## Related Issue / Discussion - Resolves #214 - Closes #287 - Resolves #206 - Closes #291 - Resolves #9 - Closes #292 - Resolves #290 ## Additional Information
The following are scheduled to be removed:
Includes finding and removing all references from
birdhouse/config/ncops
The text was updated successfully, but these errors were encountered: