Mojaloop Congo, version 16.0.0, and the accompanying infrastructure as code (IaC) version 5.0.0 are now official and available for adoption.
Over the past few months, Mojaloop’s Performance Workstream has been hard at work on characterization, profiling, scalability, and improvement of the Mojaloop core engine’s performance. The new release is a culmination of this effort, and it’s now available to the Mojaloop community.
One of Mojaloop’s invariants (operational characteristics) covers the performance of Mojaloop’s clearing engine and Mojaloop Congo (v16.0.0) has helped us get closer to (or better than) the baseline more than any other release in the past.
Along with this, Mojaloop’s infrastructure as code (IaC) gets a next generation implementation with tremendous improvements and new additions. This comes with a new cloud-agnostic modular approach, a new API Gateway Istio, support for a new identity and access management (IAM) framework, upgraded monitoring options and much more. Read below for the full details.
Performance Improvements
- The central ledger was enhanced with the enabling of batching on both the “prepare” and “fulfill” legs of the transfer, tremendously increasing performance.
- A new architecture to scale and improve the quoting service’s performance was implemented.
- The account lookup service (ALS) has been greatly improved with the introduction of caching coupled with several performance related bug fixes.
- Several improvements for logging and caching have been commonly applied to all the core services, which help greatly with improving performance for each of the components and collectively of the Mojaloop’s core engine.
- The end-to-end performance of the Mojaloop core engine has been improved at least 10x since the beginning of the dedicated workstream.
IaC v5.0.0 for Mojaloop Congo
This next-generation IaC provides a continuous integration and continuous delivery (CI/CD) platform for delivering cloud-agnostic and 100% open-source Kubernetes clusters with Mojaloop or participant tools’ automated deployments. The platform also includes out-of-the-box standard components to provide non-functional capabilities such as storage, configuration security, service mesh, and AuthZ and AuthN. The CI/CD platform is called “Control Center”.
Control Center provides the following components:
- Gitlab server and CI for storing configuration and building environments.
- Wireguard mesh network for secure tunnels between environments and control center as well as providing connectivity for operators to switch environments.
- A private registry for docker images and potentially other components such as helm charts, Debian packages, etc.
- Vault for securely storing sensitive data for the control center and environments.
- Minio for Amazon S3-compatible object storage.
Regarding the IaC for the provisioning of K8s clusters, there are three tiers of modules:
- Infrastructure (cloud/bare metal-dependent modules).
- Kubernetes Cluster (K8s distro modules).
- Gitops artifact generation (independent of cloud/bare metal and K8s distribution).
This release features
- Support for Mojaloop v16.0.0 with integrated post-deployment testing via the TTK.
- Bare metal improvements to support node labeling to provide node affinity capabilities as well as the use of taints/tolerations.
- Refactored monitoring stack making use of operators for Prometheus and Grafana.
- Added Ory stack as a generic authorization framework for the switch including finance portal, MCM and other integrated participation tools. Used in conjunction with Istio and Keycloak.
- Onboarding support for external participants using participation tools, the new API Gateway Istio and IAM framework Ory. Addresses MTLS, JWS, IP filtering.
- Pre-configured OIDC connectivity for Gitlab users to authenticate/authorize for vault, Grafana and Argocd (new Istio virtual service endpoint now for Argocd as well).
Repo locations for IaC:
- https://github.com/mojaloop/control-center-util (for bootstrapping control center).
- https://github.com/mojaloop/iac-ansible-collection-roles (Ansible playbook and roles for both control center and Kubernetes clusters).
- https://github.com/mojaloop/iac-modules (terraform modules for building control center and Kubernetes clusters as well as the Argocd applications and deployable templates.
- Comprehensive documentation with step-by-step instructions for deploying Mojaloop using next generation IaC (including IaC v5.0.0) is here: https://github.com/mojaloop/iacv2-docs. We welcome your feedback and suggestions on this.
More Improvements
In addition to performance, significant improvements in the release process of Mojaloop’s core services have been made. Several steps in the release process such as creating an initial pull request (PR) for the release candidate that involves updating a lot of helm files (charts and values files) are now automated. This will help greatly in reducing the release cycle time to respond quickly to adopter and community needs.
Mojaloop v16.0.0 – Congo coupled with IaC v5.0.0 is a great milestone on the Mojaloop timeline, with much-awaited performance and IaC upgrades. This helps keep Mojaloop current and well-suited to adopter needs on the path of evolution. Mojaloop Acacia (v15.2.0) has served us well so far and we believe that Congo will take it to the next level, helping address even higher and more stringer requirements and further accelerate adoption.
Looking Ahead
Two of the high-priority features on the Mojaloop roadmap are foreign exchange (FX) and next generation (Nextgen) settlement which are coming soon. In addition, other items delivered by active workstreams, such as a merchant workstream, plus further performance improvements and additional bug fixes will be bundled in the next release. While the partner teams and workstreams, with support from the Community, get these ready Mojaloop Congo should keep us in good stead.
We also take this opportunity to profusely thank all the contributors who made this happen.
Please try it out and share your feedback!