This post is for those doing code in Frappe / ERPNext, and NOT for those who are users.
It is really ironic that RMehta loves monolith.
But Frappe is an extremely powerful tool for Microservices development.
I mean, Frappe is very powerful.
However, it is easy to mess up if you do not have the Microservices mindset - especially if you come from a monolith - Ruby type mindset where DRY - do not repeat yourself reigns.
When you do Microservices - your application should be self-contained. It should be able to run without reaching out to other apps.
For example, if you are developing an app for Property Management, it is better to have Tenant, and not use ERPNext’s Customer immediately. This way, the functionality of individual Microservices app is preserved and you do not need to think about the nuances and intricacies of other apps. So you are Agile.
When you need to use the functionalities of other apps, like if you need to use produce Sales Invoice for your Property App, you include a Linking field in the Tenant DocType to link the Tenant to a Customer DocType.
This breaks the DRY mindset - but this is very much in line with Microservices and is prevalent in the NoSQL world - which is the more recent paradigm in software development.
For example, School needs Student DocType and Health needs Patient DocType. To access the accounting functionality of ERPNext, Student may link to Customer and Patient may link to Customer.
With this mindset - Microservices mindset - development using Frappe / ERPNext can be very fast and agile.
Given the Docker / Kubernetes capability which allows Frappe / ERPNext to scale according to need, this setup has almost no equal.
What do you think?