# Deploying Mojaloop

This section details the deployment aspects of the Mojaloop Hub.

## Deployment of Mojaloop Hub (excluding participant integrations)

The following table provides guidance on which Mojaloop deployment scenario is most appropriate for different user types and use cases.

For detailed information about each deployment tool, please refer to the [Deployment Tools](https://github.com/mojaloop/documentation/blob/master/docs/product/features/deployment/tools/README.md) documentation.

| Deployment Scenario / User type          | Learning                                                                | Evaluation (choosing Mojaloop)                                                                                                                                                                | Use-case Testing                                                                                                                                                                              | Feature Development and Dev Testing                                                                                                                                                           | Production                                                                                                                                 |
| ---------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Student                                  | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p> | N/A                                                                                                                                                                                           | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p>                                                                                                                       | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p>                                                                                                                       | N/A                                                                                                                                        |
| Developer                                | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p> | N/A                                                                                                                                                                                           | <p>Footprint:<br>- Single machine e.g. laptop or single VM.<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p> | <p>Footprint:<br>- Single machine e.g. laptop or single VM.<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p> | N/A                                                                                                                                        |
| Business analyst                         | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p> | <p>Footprint:<br>- Single machine e.g. laptop or single VM.<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p> | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | N/A                                                                                                                                        |
| Potential adopter                        | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p> | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | N/A                                                                                                                                        |
| Auditor / External QA / Security Analyst | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p> | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | N/A                                                                                                                                                                                           | N/A                                                                                                                                        |
| System Integrator                        | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p> | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Fully redundant, replicated, high availability deployment<br>- On-premises or cloud<br>SLA: High SLA in many areas.</p> |
| Hub Operator                             | <p>Footprint: Single machine e.g. laptop or single VM.<br>SLA: None</p> | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Low resource usage, single cluster<br>- Production like environment (sandbox? lower SLA than prod)<br>SLA:<br>- Lower than prod but possibility of testing NFRs.</p>       | <p>Footprint:<br>- Fully redundant, replicated, high availability deployment<br>- On-premises or cloud<br>SLA: High SLA in many areas.</p> |

## Deployment Tools

| Tool                                                                                                                                                   | Features                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Minimum Resource Requirements                                                | Security                                                 | Documentation                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | SLA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | Caveats, Assumptions, Limitations etc...                                                                                                                                                                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [core test harness](https://github.com/mojaloop/documentation/blob/master/docs/product/features/deployment/tools.html#core-test-harness)               | <p>- single node<br>- docker-compose<br>- "profiles" available<br>- No HELM<br>- No gateway<br>- No ingress/egress components<br>- No IAM stack<br>- Deploys:<br>- core services &#x26; backing services<br>- portals (optional)<br>- monitoring stack (optional)<br><br>Used in CI pipelines for integration testing.</p>                                                                                                                                                    | Mid level laptop or desktop workstation                                      | Zero security                                            | <p>- Developer focused documentation.<br>- Non-technical user documentation to support learning objectives.<br>- Product level documentation to explain features e.g. what it does and where it is appropriate for use</p>                                                                                                                                                                                                                                                                                                                                                                               | - No SLA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | <p>- Never to be used in production.<br>- Never to be used to process real money transactions.</p>                                                                                                                                                                                                                                                      |
| [HELM deploy](https://github.com/mojaloop/documentation/blob/master/docs/product/features/deployment/tools.html#helm-deploy)                           | - Just HELM charts needed to deploy Mojaloop services and backing services.                                                                                                                                                                                                                                                                                                                                                                                                   | <p>- High end laptop or workstation<br>- Small cloud kubernetes cluster.</p> | User is required to harden their own Kubernetes cluster. | <p>- Developer focused documentation<br>- Semi-technical / BA focused documentation to support use-case experimentation and testing.<br>- Product level documentation to explain features e.g. what it does and where it is appropriate for use.</p>                                                                                                                                                                                                                                                                                                                                                     | <p>- Must be able to achieve SLAs (given baseline hardware specs):<br>- Availability:<br>- ? 4/5 9's?<br>- RTO/RPO: ? As close to zero as possible.<br>- Throughput/Performance<br>- TPS: 1000+ (sustained for 1 hour)<br>- Latency (Percentiles) (excluding external latencies):<br>- Clearing: 99% &#x3C; 1 second.<br>- Lookup: 99% &#x3C; second.<br>- Agreement of Terms: 99% &#x3C; 1 second.<br>- Data management:<br>- Mitigations against data loss i.e. replication, disaster recovery.<br>- Retention (audit, compliance)<br>- Archiving.<br><br>NB: Strategy is high availability over disaster recovery.</p> | <p>- Can be used in production.<br>- Safe for processing real money transactions.<br>- User/adopter is required to deploy and configure their own infrastructure, including Kubernetes cluster(s), ingress/egress, firewalls etc...<br>- Security is limited to what HELM charts provide. Additional security design and configuration is required.</p> |
| [Infrastructure as Code](https://github.com/mojaloop/documentation/blob/master/docs/product/features/deployment/tools.html#infrastructure-as-code-iac) | <p>- multiple deployment platform targets<br>- AWS, On-prem, other clouds, (modular)<br>- multiple orchestration layer options<br>- managed k8s, microk8s, eks<br>- GitOps pattern (control centre)<br>- can deploy and manage multiple hub instances / environments<br>- Deploys:<br>- control centre<br>- core services &#x26; backing services (options for managed backing services)<br>- portals<br>- IAM stack<br>- monitoring stack<br>- pm4ml<br>- GitOps pattern</p> | - High end cloud or on-premise infrastructure.                               | Full security                                            | <p>- Multiple levels of documentation targeting all levels of "user".<br>- Developer docs to enable use, maintenance, enhancement, extenstion of IaC capabilities e.g. adding new targets / services / features.<br>- Detailed architecture diagrams and explanation to enable deep understanding.<br>- Tech ops focused docs to enable "infrastructure engineer" level users to use IaC to deploy and maintain multiple mojaloop instances for development, testing and production.<br>- Product level documentation to explain IaC features e.g. what it does and where it is appropriate for use.</p> | <p>- Must be able to achieve SLAs (given baseline hardware specs):<br>- Availability:<br>- ? 4/5 9's?<br>- RTO/RPO: ? As close to zero as possible.<br>- Throughput/Performance<br>- TPS: 1000+ (sustained for 1 hour)<br>- Latency (Percentiles) (excluding external latencies):<br>- Clearing: 99% &#x3C; 1 second.<br>- Lookup: 99% &#x3C; second.<br>- Agreement of Terms: 99% &#x3C; 1 second.<br>- Data management:<br>- Mitigations against data loss i.e. replication, disaster recovery.<br>- Retention (audit, compliance)<br>- Archiving.<br><br>NB: Strategy is high availability over disaster recovery.</p> | <p>- Can be used in production.<br>- Safe for processing real money transactions.</p>                                                                                                                                                                                                                                                                   |

## Document History

| Version |       Date       |     Author    |                              Detail                              |
| :-----: | :--------------: | :-----------: | :--------------------------------------------------------------: |
|   1.2   | 20th August 2025 |  Sam Kummary  | Updated sections to use helm as deployment option where relevant |
|   1.1   |   3rd June 2025  |   Paul Makin  |         Removed performance section, moved it to new doc         |
|   1.0   |   7th May 2025   | Tony Williams |                          Initial version                         |
