...
- Keep it simple, stupid.
- Make it for a reason. It's not art.
- Make it to last.
- Make it sustainable. Downtime is key to productivity.
- Enable others. I'm expendable.
The foundation forms a robust but flexible data model which is ready-made for extensions and customizations. An API provides access to all basic functions grouped in modules.
...
The main design principle of the Engine is CQRS ( Command Query Responsibility Segregation ), a pattern that separates commands and queries into different models and services. This approach has multiple benefits: 1) State changes (commands) are persisted, providing an audit of all changes, 2) fine grained control and extension of state changes, and 3) scalability based on consumer behavior and real system load.
...
The Service Layer provides module specific business logic and rules, and role based access control and a xBRL compliant reporting engine. Transaction awareness and data validity is encapsulated, and extension points are available to enhance built-in workflows.
...
- Database caching stores records on the database level and is useful for reporting, batch jobs, and low level SQL queries.
- 2nd Level caching stores data objects on the application level and keeps database turnarounds on a very low level allowing fast in-memory access of frequent data.
Architecture (in 2020)
The Engine’s architecture was designed with a focus on modern, scalable and extensible technologies ready to run in the cloud. All components where were selected based on their maturity, proven reliability and cost efficiency.
It is our goal to provide a software that is deployable with effectively no cost that can grow with the customer need over time using well known best practices and support from a wide range of communities.
The basic Fineract Financial Service Engine Fineract architecture is as follows:
Resource | Component | Comment |
---|---|---|
Operating System | Linux, Windows, Mac OS | Amazon AWS image and Debian package available |
Runtime | Java |
>=11 | |
Application Server | Tomcat |
v9.x | Embedded Tomcat for development environments |
Database | MySQL 5. |
7 | Embedded MariaDB for development environments |
Application Framework | Spring Framework |
5.x |
Persistence Framework |
OpenJPA 3.x |
Test Framework | JUnit |
5.x Mockito |
3.x REST-assured |
4.x |