[ 
https://issues.apache.org/jira/browse/FINERACT-1571?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17519918#comment-17519918
 ] 

Petri Tuomola commented on FINERACT-1571:
-----------------------------------------

Hi [~arnold] - great idea.

I'm assuming that initially the instances would share the same database and 
would only consist of the application instance - correct? And then as second 
step we could create a separate read-only replica database for the read 
instances, whilst keeping the write / batch instances pointing at the "master" 
database?

I'm assuming the first step would be to start classifying / declaring APIs to 
be read-only vs write, so that it's clear which APIs can be called on the read 
instance. I'm assuming this is pretty straightforward in most cases, though I 
think we do need to confirm that the read APIs do not have any "side effects".

For example, I seem to recall that there was some code for creating an audit 
trail that logged which APIs were called - we should think about how that 
should work on read instances. Similarly I think some of the report / template 
read APIs might actually create temp directories / files on the server. This 
may or may not be a problem on a read instance...

Anyway - fully agree with the idea, and think this would be a great step 
forward...

 

> Read/write/batch separation
> ---------------------------
>
>                 Key: FINERACT-1571
>                 URL: https://issues.apache.org/jira/browse/FINERACT-1571
>             Project: Apache Fineract
>          Issue Type: New Feature
>            Reporter: Arnold Galovics
>            Assignee: Arnold Galovics
>            Priority: Major
>
> The goal of this ticket is to introduce the notion of 3 different instance 
> types for Fineract:
>  * Read instance
>  * Write instance
>  * Batch instance
> Each instance type comes with different restrictions. The specifics can be 
> found in the table below.
> || ||*Read instance*||*Write instance*||*Batch instance*||
> |*Using only read-only DB connection*|Yes|No|No|
> |*Batch jobs are automatically scheduled or startable via API*|No|No|Yes|
> |*Can receive events (business events, hook template events)*|No|Yes|No|
> |*Can send events (business events, hook template events)*|No|Yes|Yes|
> |*Read APIs supported*|Yes|Yes|No|
> |*Write APIs supported*|No|Yes|No|
> |*Batch job APIs supported*|No|No|Yes|
> |*Liquibase migration initiated upon startup*|No|Yes|No|
> This will help scaling Fineract's individual parts for highly-available and 
> high-throughput systems.
> Also, this will make it possible to utilize read-replica databases.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to