Hello everyone,

... we have an ongoing effort to tackle some of the technical debt that
accumulated over the years. One of the areas that need some polishing is
type-safety. Most of you know that we do manual JSON parsing (not only) in
the REST API layer. From there command wrapper objects are created that in
turn are delegated to our command processing infrastructure. Because the
different services/API endpoints handle different types of data it was
decided in the past to boil everything down to the least common
denominator: a variable of type string.

Those that worked in these areas know that the developer experience with
that type (pun intended) of variables is challenging, e.g. when you do
refactoring. But that's only one very obvious implication. There are also
performance and reliability related problems, and a whole bunch of
associated boilerplate code that needs to be maintained.

We have an opportunity (some dedicated resources) that will allow us to
improve on those issues, but tackling this only on the surface (i.e. the
REST API layer) where this problem is most visible would not address the
source of the issue. Where all the lack of type information is actually
originating from is the central command processing service that we
currently have upstream. Besides the lack of type information there are
also some reliability (thread congestion, relatively high error rate) and
performance (synchronous processing) issues that need to be addressed.

That's why I am proposing a from the ground up clean implementation of this
critical component. Before I duplicate too much in this message, please go
to:

   - FISP (Fineract Significant Improvement Proposal):
   
https://cwiki.apache.org/confluence/display/FINERACT/FSIP-5%3A+New+command+processing+infrastructure
   - Jira ticket: https://issues.apache.org/jira/browse/FINERACT-2169
   - pull request: https://github.com/apache/fineract/pull/4281

As you can see there is initial code available. There is a fully working
unit test that demonstrates how the different moving parts would work
together. And there is an initial smoke test available (can be improved to
be more realistic).

Please let me know what you think and if you agree with the strategy on how
we should proceed (please read the wiki page).

Please send your input/suggestions and leave your comments here.

Cheers,

Aleks

Reply via email to