Compiled 2017-2018

Apache Fineract Installations and Experiences: Led by Ramesh Padmanabhan, these notes capture use cases for Apache Fineract across some of its users/partners.Based on interviews with the partners, this document will capture the deployment and configuration environments, as well as challenges and lessons learned. The idea is to offer this as a shared resource to the community and help to influence hosting tools and recommendations for the forthcoming Apache Fineract CN architecture. 


Mifos Initiative (via Conflux staff)

contact: Nazeer Shaikh

 Resources used:

Webserver is Tomcat 7.0.6.4

MySQL: 5.7/5.8

Java 8 to run the platform

Challenges faced:

The database server and Webserver run in the same machine

With 150 tenants, MySQL becomes a bottleneck. Using the Amazon Aurora, RDS service resolved this problem.


Production Server:

EC2 instance: Large instance being used

  Quad core 2.5Ghz cpu

  160 GB SSD

  16 GB DRAM

scale: 250 tenants

Production Server Cost: <EC2+DB: Demo + prodn+ staging, costs $1000/mo>

Utilization of instance: not yet captured

Staging server: Medium sized instance.

OS: 14.04 Ubuntu

Mifos build: Built own environment.

Kuelap

 contact: Markus Geiss

 Finerat CN architecture:

 What binds the    microservices together:

 The API of the microservice. Every microservice has its own API. REST based with JSON objects.

 Uses Spring REST, not Swagger. Every microservice is a Spring boot application. It does all the wiring.

Use Spring JMS(msgq) + Spring Data + Access Cassandra

Use Java Money for financial calculation

Scale:

Cloud/Instance:

        - Database Architecture

Database Cluster: Use Galera 3 node cluster for MySQL

  3 nodes for Cassandra

  2 nodes for ActiveMQ(for fault tolerance)


Cassandra usage: stores every state change.

All journal entries are stored in Cassandra. All loan+savings go through Cassandra. Data for 1.5M – 2M customers

 

MySQL is used for Typical Relational Data: eg customer name+info

Command gateway - hides which DB is accessed. Provided by Spring

 

Architecture for Microservices:

 

Current Fineract CN build

 

Security/Compliance:

Next Fineract CN release:


Thitsaworks 

contact: Thynn Win

Mifos X installed in

Production environment:

EC2 instance: X-large M4

Use ELB to load balance up to 2 servers so far

Using only one server for the most part, financial report generation at end of month puts enough load to require the second.

Concerns: Memory leak during report generation may have caused exceptions.

Mifos X: version 16.12.01. Planning to migrate to v17

Challenges:

Scale: Reporting crashes start to occur at around 12K borrowers. Expect to grow to 100K borrowers in a year. This issue  may since  been resolved.

Security concerns: Being addressed by getting Java developers to make changes at the Application level.

Will be using Trend Micro running in AWS for IDS functionality

Wishlist for Apache Fineract CN

Mines.io

contact: Arvind Sujeeth

Mines.io is a fintech startup for developing countries. People can dial a code and request a loan. Partners with Telcos in the backend for mobile data.  The company enables banks to approve loans for customers.

Use Mifos X for all customer loan accounts in Mifos ledger.

Use case: Mines.io uses only a small part of the functionality. Uses mainly core loan/savings functionality. All customers use mobile access, the UI is only used internally.

Why Mifos ? Came across Mifos and worked closely with architect. The API is really important, since the goal is to be programmatic or relatively high volumes of transactions that are expected.

Infrastructure used: AWS is used and Mifos X is part of an overall microservice architecture. Mifos X is used as a loan ledger service.

Production Environment:

Scaling: Plan to use multi-tenant capability in Mifos for horizontal sharding

Deployment in AWS: use Docker for Microservices deployment; Amazon scaling groups

Report generation: use external API for BI report for flexibility as well as to  circumvent any  potential performance issues in Mifos for this function

Concerns:  Security is a huge concern

Sync with Mifos: Sync with Master branch of Fineract periodically

Fineract CN wishlist:

iDT Labs

contact: Salton Massally

Deployments

Production Environment: AWS

Future plans: use Mifos I/O when its stable. Will maintain Mifos X for clients onsite installations

Scale: how many users/borrowers ? What is current utilization ?: tbd, will provide this information

Security:

 Offering Banking as a Service:

Wishlist for Fineract CN 

DPC Hungary

contact: Istvan Molnar

Implemented Apache Fineract for German bank. Migrated 5000 loan accounts so far, expected to scale to 50K loans in a year.

Reasons to pick Apache Fineract:

- reduce license fees was the original reason.

- Also did formal evaluation using metrics of modern technology, ability to modify code and ISO certifications.

- Fits the expertise of the company: MariaDB, MySQL, Angular development

Production Environment:

All locally hosted in the Bank.

Development Environment: Hosted in AWS. EC2 + Jenkins for continuous build

EC2: Single VM(medium instance). Used for development and testing only. Up to 30 user accounts. With Userstories deployed immediately using Jenkins.

Using Tomcat for test environment in Bank as well as in Production.

Bank Release manager in Bank will take Git reports and move to ‘perforce’ for version control.

 

One test environment for System Integration

One test environment for User acceptance

Local environment for Production.


Fineract version: 0.60 in use, want to move to 1.0


Created new Security Audit

User Authentication/Roles/Groups/Permissions. Added some new roles in Mifos.


Wishlist for Fineract CN

Scale for future: Current design can support up to 50K loans but not 100K


The Bank uses separate Data Warehouse, separate CRM, report generation, reconciliation in SAP.

The monolithic design in Mifos X is not seen as a bottleneck, since they took away CRM. Created a clone and threw away stuff. Created a payment hub on their own.

Ideally: Payment Hub is a microservice.

Multiple Tenants is an important use case: Ideally multiple loan services can migrate to this platform.

Migration to Fineract CN: Can this be automated as much as possible ?

Can we have documents that shows how loans and customers can be migrated ?

Dreamstart Labs

contact: CTO - Henrik Esbensen


Was the cofounder of Dreamstart: goal is to digitize Savings groups

Have developed an Android App and capabilities on mobile phones. Want to use Fineract CN on the backend server side.

Previous experience was at Elevate Africa: they were an early adopter of Mifos X. Henrik helped define the requirements for Mifos X.

Production Environment: Gen 3 Running on Google Cloud Platform

Details: pending

Scale:  Elevate Africa was Hosting Mifos on AWS for MFI only

5 admin users, 300 clients doing 100s of loans


DreamStart: For Savings groups

6-10 sample groups to scale to 30K-40K groups of 25 people groups.

Early interest from Urban users also shows potential demand for large scale

Mifos use case for Savings groups:


Henrik’s team builds front end for the App. NGOs help create the groups, Mifos handles the group structure.

Scale: 5M to 20M clients expected from one NGO


Special Feature: Rural areas have no reliable Internet. The App is designed to run offline and synchronize later. Using sequence of SMS, can still synchronize with no dataplans. Dreamstart uses Mifos for synchronization and responses.


Advantage of Fineract: Interfaces are provided to connect to Mobile Money, consolidates to one interface.


Advantage of Multi-tenant vs. separate instances: Aggregate data across all MFIs in a region.

Fineract CN advantage: Microservices architecture and Mobile Money interfaces


Security:


Key Use case for Fineract CN: Enable people to host Fineract CN as oppose to building their own Infra. This is preferred for Saving Groups.



RuPie

contact: Nayan Ambali

Initially built company (Conflux Technologies) to accelerate financial inclusion institutes by providing scalable platform and digitising the financial offerings to serve last mile customers at cost effectively. At present it is serving 60+ FIs in 15 countries.

RuPie is self-serivce urban micro-finance, offers micro-credit to semi-skilled and small business owner entirly on mobile phone. As customer repay the loan on time, RuPie unlocks larger loans at reduced cost with flexible terms.

At present, RuPie is serving in North Bengaluru and daily handling about 50 new loan applications and serving few hundred customers.

RuPie provides the guarantee to the Bank on behalf of the customer.

Microfinance interest rates are as high as 26%, Rupie wants to bring this down by offering efficient handing of loans.

Production Environment:

Uses Apache Fineract 1.0

Installed on AWS server, uses Aurora DB from AWS for database

Tomcat for front end.


Database: one master, one read replica: uses Medium EC2 instance

Scale: 250 end users, not very active: only around 20-25 requests during peak.

Bottleneck expected in a year: need Mifos I/O for scale

Questions for Fineract CN: feature parity, how to deploy ?

Security:

Relying on Fineract built in capabilities: Major security is protecting customer data.

Mobile data is encrypted.

For Bank integration use two accounts: set a limit on number of transactions.


Fineract CN wishlist: can the loan module in I/O support credit line feature: no amortization.

Can we reduce chattiness with client. Requires too many API calls in Mifos X

Tech and DevOps: All changes done in house, do not depend on community

Can we reduce chattiness with client. Requires too many API calls in Mifos X

Tech and DevOps: All changes done in house, do not depend on community

Conflux (Finflux)

contact: Ashok Auty

Use case: built own product using Mifos X.(Finflux). Hosting for customers.

Production: Using Aurora DB in AWS for Finflux to scale properly

Use Web App and Tomcat at different layers to provide more security to isolate the platform

For database, created read replica for reporting

Using multi-tenant for many customers

Types of customers:

Supports <50K clients, 250K loans and one instance

Supports 250K clients, > 100K loan accounts

Use Java multi-threading to initiate multiple threads and utilize multi cores.

1000-5000 loans/thread

Devops/CI: built in house. Core contributors to Mifos X. Finflux is an Enterprise product

Created private copies of code to eliminate performance issues. Ended up fixing DB structures and rewriting bottlenecks.


Wishlist for Mifos I/O : make it simple to use: simple deployment model

Feature parity


Security: Encrypt content and password

oAuth2: use SSL certification for encrypting, integrated with banks. Lot of info in APP, needs to be secure. Use 128b encryption + certificate

Have all earlier XSS, SQL, data corruption issues from Mifos X been resolved ?

Will Fineract CN team provide Docker ?

Fintecheando

contact: Victor Romero

Use Case: Initial rollout is a Savings product. Working on fingerprint validation plugin.

Scale: Plan is for 250K users,  > 400 concurrent users

Security: Customers must fingerprint validate to National database. This is a challenge.

Planning to build an API to compare the finger prints (NBIS - https://www.nist.gov/services-resources/software/nist-biometric-image-software-nbis )

For now we are connecting the current applications using the existing APIs to MIFOS (we are adding JWT tokes using KONG) for security


Release Cadence: Code will go back to Fineract

Description:

Using Mifos, the company has developed its own Core Banking system, since it was looking for a stable system with a wide base of users.

Targeting small banks and small financial companies, since the larger banks like Citi Banamex, HSBC etc use Mainframe software for core banking needs.

There are opportunities in Mexico for banks currently using SAP to migrate to Mifos IO.

Motivation for Mifos IO:

- synchronization across all branches of financial institutions is not currently easy to do with other providers

- open source + availability of Java developers.


Instances used for development:

Using DB cluster + TomCat+ load balancer(HA proxy) on AWS instances

AWS instance sizing:

Micro-medium

For DB: 12GB DRAM, 100GB(files), 4 cores, shared partition on MariaDB

Tomcat: medium instance(16GB DRAM, 20GB storage, 2 cores)

HA LB: micro-instance(2GB DRAM, 10GB File system)


Production instances: Still being sized, testing in progress


 

API: using Swagger API for mobile App communications



Security: In cloud using private and public keys

All communications between systems are encrypted. Using encryption for MariaDB as provided by database


Finerat CN wishlist: