Improving the Reporting Stack setup
The below table describes the estimated of potential improvements in setting up the reporting stack. More details can be found in this forum post.
Task | Short description | Initial run | Run with documentation and forum post | Improvements description | Improvements estimate | |||
|---|---|---|---|---|---|---|---|---|
| Time | Story Points | Time | Story Points |
| Effort | Estimate of time after the improvement | |
Set up the AWS Services | In order to set up the reporting stack, there is a need for creating the instance to hold it first. The recommended way is to use the AWS EC2 with Load Balancer. | 3h | 5 | 3h | 1 | Use terraform. | 8 | 30m - 3h |
Prepare the Docker certificates | In order to execute docker commands remotely, those certificates have to be prepared and provided to the instance. | 1d | 3 | 1d | 1 | Use terraform. | 8 | 30m - 3h |
Configure the repositories | Prepare all repositories, generate, and set up the credentials, paths, URLs. | 5d | 3 | 1d | 2 | Create a new reporting stack sample repository or adjust the Core reporting stack one and make sure it’s stable and working well, and that it can be simply copied for a new implementation (with instruction of what exactly should be changed (paths/URLs/credentials). | 3 | 3h |
Improve the docker files and scripts (so that initial URL/credentials propagation/generation would be automated and require as little manual actions as possible). | 3 | 1h | ||||||
Configure the Jenkins jobs | Setup the Jenkins jobs, based on existing ones. | 1d | 2 | 1h | 1 | Document the setup of the job In case it couldn’t be cloned of a current one. | 1 | 1h |
Inital NiFi registry setup | Initial deployment and setup of the NiFi Registry. | 3d | 3 | 4h | 1 | Remove the usage of the NiFi Registry. | 8 | 0 (and it could reduce the time for NiFi setup) |
Nifi setup | Deployments and setup of the NiFi and, and synchronizing NiFi with the Nifi registry. | 9d | 8 | 1d 4h | 2 | Adjust and document the usage of the scripts to use NiFi (and eventually NiFi registry if still used). | 3 | 3h |
Superset setup | Deployment of the Superset, fixing the dependency issues and verifying if the data are loaded properly. | 1d | 2 | 4h | 1 | Improve the docker files and scripts (like updating the superset requirements versions automatically or changing the scripts so it won’t require the newest versions). | 3 | 1h |
Connect OpenLMIS with the Superset | The work related to allow users to properly access Superset reports from the OpenLMIS. | 1d | 2 | 4h | 1 | Improve the docker files and scripts (creating the superset user in the database automatically). | 2 | 1h |
Subtotal | Subtotal of work above. | ~21.5d | 28 | 5.5d | 10 |
| 39 | ~1.5-2d |
Upgrade to a new version (strongly depends of what changes were made for the implementation) | Providing the new version of the reporting stack to the existing instance. | might take up to multiple weeks | never performed | never performed | never performed | Get rid of all implementation-related files in the distro repository (move files that are always changed to a different place and allow to just override any other files only when there’s a need). | 13+ | might still take up to multiple weeks, depending on the changes made |
Priorities:
Nifi improvements
Removing the Nifi registry, following the Casper pattern
Would like to lay out the dev-to-deployment cycle (for upgrading)
Configure the Repositories
Superset
Superset setup
Connect OpenLMIS with Superset
Terraform
If we could get the PCMT improvements and move this into a central piece of CI/CD - however our current estimate doesn’t include this.
I think it’s a do-able improvement to remove the dependency on the Nifi registry. It would greatly reduce both the Nifi registry and Nifi setups. I’m not that familiar with how the story points are defined, but I can potentially see it as a similar amount of work as other tasks on this list, especially since we already have an example pattern in the Casper project (https://gitlab.com/openlmis/casper-pipeline/-/tree/master/config/services/nifi/scripts).