mojaloop / design-authority-project

This is the Issue and Decision Log for tracking mojaloop and related Designs
1 stars 2 forks source link

Proposal: Remove external dependencies that are tightly integrated into the Mojaloop Helm Chart #69

Closed mdebarros closed 2 years ago

mdebarros commented 3 years ago

One Line Summary:

I propose that all external dependencies are removed from the Mojaloop helm charts, and are instead deployed as a separate pre-requisites.

The rationale behind this being:

  1. We currently do not see any Mojaloop switch implementors using these dependencies in QA/Prod environments. They instead have chosen to either deploy their own dependencies or rely on managed services instead.
  2. The tightly coupled external dependencies are proving to be an issue for the Mojaloop Helm chart upgradability as we do not have any control over them, by externalizing them we remove this tight coupling on Mojaloop Helm deployments. This ensures that the onus is on the deployer to ensure that all dependencies are deployed as necessary.
  3. This also ensures that any Mojaloop Helm deployment can be easily undeployed without impacting the persistence layer (i.e. data stores, persistent message streams, etc). This is useful for deploying new versions that do not support upgrades (i.e. similar to this issue https://github.com/mojaloop/project/issues/1759.5).
  4. The following points will most likely break the upgradability of the charts in the future similar (i.e. similar to this issue https://github.com/mojaloop/project/issues/1759.5):
    • Official Helm repos for stable and incubation charts are being deprecated, and we will have to either migrate repos or find alternative helm charts for external dependencies that are currently not maintained.
    • Many charts are also not being maintained due to the deprecation of Helm v2, and instead, integrators are choosing to create Helm v3 charts that are not backwards compatible.
    • Many charts are moving to a Kubernetes Operator model, which does not play well when tightly integrated as a dependency on a parent chart.

We would need to enhance the "Deployment Guide" documentation to provide proper guidance on to deploy the dependencies and configure the Mojaloop Helm chart appropriately.

Request Details:

**Artifacts**: - OSS Story https://github.com/mojaloop/project/issues/1852 - Pending DA Approval **Dependencies**: - Update https://github.com/mojaloop/project/issues/1852 to reflect the decision (1-3) for this proposal ### **Accountability**: - **Owner:** @mdebarros - **Raised By:** @mdebarros ## **Decision(s)**: 1. Dependencies will be removed 2. Documentation deployment guide updated to include them as pre-requisite dependencies 3. Documentation deployment guide updated to include information on how to deploy the pre-requisite dependencies 4. Separate initiative will need to occur to simplify Mojaloop's deployment steps into a "one-click" experience - **Approved By:** @godfreykutumela ### Details - [ ] Actual decision made as a result of discussion ## **Follow-up**: - [ ] Actions to implement the decisions
godfreykutumela commented 3 years ago

Hi, @mdebarros the DA has approved this decision. The updating of the deployment guide and enabling of a one-click deployment should be addressed as separate issues which can be started parallel to this one and will not require any further DA approval. Thanks and please let me know should you need anything on this.

lewisdaly commented 3 years ago

@mdebarros I wonder if we can go one step further and make our helm charts even more modular...

I'm thinking more of a "plugin" style approach, where users can install the bare-bones mojaloop by default, and then can install additional components that are managed in their own helm charts.

mdebarros commented 3 years ago

@mdebarros I wonder if we can go one step further and make our helm charts even more modular...

I'm thinking more of a "plugin" style approach, where users can install the bare-bones mojaloop by default, and then can install additional components that are managed in their own helm charts.

It's worth noting that one can already do that. You can install each chart individually.