Here's a brief overview of our current system architecture:
- Mifos (Web) Application
- Presentation layer: Freemarker, Spring MVC; in transition from JSP and Apache Struts
- Business Logic: Spring Framework and custom Java code
- Data access layer: Hibernate Object Relational Mapper
- Web server: Apache Tomcat
- Database layer: MySQL
- Build system - Maven, JUnit, TestNG, Selenium
- Modularity (responsibility of a module, inter-module communication) (under discussion)
...
We mostly use only one framework/library for each functional need. For example: only MySQL is used as a relational database. This makes it easier for developers to learn the system. On the other hand, it limits capabilities (ie: we don't have NoSQL databases). Sometimes this rule is broken, as is the case with JUnit and TestNG: there isn't a great reason for Mifos using both test frameworks.
See also
...