Hi Eric!

I'm taking the perspective of service isolation and scalability here.
For services to be isolated with all that this brings they cannot share its 
database with other services.
Scalability is also a central issue where one shared database for all services 
is the worst case and an event sourced system with CQRS and eventual 
consistency is the most scalable.

Now, the nice thing is that we can have it both ways: In a microservice 
architecture fully embracing scalabilty by not sharing state we can still have 
read models serving the analytical functionality you refer to by constructing a 
database that serves these use cases well.

Referencing the discussion about load testing initiated by Joseph Cabral where 
processing 1.2 million accounts took hours, I would like to point out that in a 
DDD design where the aggregates contain all or nearly all the data needed for 
the calculation it is straightforward to scale this type of operation to take 
no more than a couple of seconds. I recently did a proof of concept using the 
Akka stack doing exactly this type of demo. The operation carried out in the 
PoC is probably a great deal simpler, but the important thing is to use a 
suitable model and allow scaling by not sharing data.

This is totally impossible if you use a single shared database for both write 
and read purposes.

Best regards Niklas



[cid:[email protected]]
Niklas Uhrberg
Konsult
IT Development | Loans & Credit




Resurs Bank AB




Växel:  +46 42 38 20 00
E-post: [email protected]<mailto:[email protected]>
Webb:   www.resursbank.se<http://www.resursbank.se>




________________________________
From: Eric Owhadi [[email protected]]
Sent: Tuesday, October 22, 2019 4:32 PM
To: [email protected]
Subject: RE: Fineract CN and its database

Hi Niklas,
I have not followed or seen the email thread on this topic, but I am curious if 
the adverse draw back of doing so was discussed:
When analytical queries are needed to help in business decisions/metrics, 
crossing several domain, performing joins between tables belonging to different 
domain can only be done efficiently using database joins. If each micro service 
owns its database, we explicitly forbid using DB joins, therefore by high price 
doing adhoc application level joins.
Does that make sense?
Regards,
Eric Owhadi

From: Niklas Uhrberg <[email protected]>
Sent: Tuesday, October 22, 2019 4:43 AM
To: [email protected]
Subject: Fineract CN and its database

External
Hi!

About Fineract CN and its database, I guess you have discussed splitting the 
database so that each microservice "owns" its database and does not share the 
same database with the other microservices.
Is this setup an explicit goal for Fineract CN?

Best regards Niklas


[cid:[email protected]]

Niklas Uhrberg

Konsult

IT Development | Loans & Credit




Resurs Bank AB




Växel:

+46 42 38 20 00

E-post:

[email protected]<mailto:[email protected]>

Webb:

www.resursbank.se<http://www.resursbank.se>





Reply via email to