How to make design archteture for a mendix project?
What the right way to make design before a mendix project? Is very common to have discussion about MVC, microservice, P2P in mendix project?
Paulo Sérgio dos Santos Lima Junior
In my experience, it's common to have a talk about architecture before starting a sizable project, however some projects are so small and straightforward that you don't discuss or document architecture. This is also dependent on the maturity of the organization, of course.
There are multiple levels of architecture related to a Mendix project that can be discussed:
Enterprise architecture: what kind of applications do we want to build with Mendix
Solution architecture: what are the responsibilities of Mendix and related components to fulfill all requirements, how do we integrate them all into a solution
Software architecture: how do we best implement a certain requirement in Mendix
To cover your examples:
P2P is never discussed, since Mendix creates web apps which have a client server architecture.
Microservices are discussed at the solution architecture level. Since this requires quite a bit of up front investment, it's usually chosen for long term solutions with an extensive code base.
MVC would be discussed at the software level, but usually isn’t discussed: Mendix lends itself well to a standard way of working and deviating from that creates as many problems as it solves.
Other common architecture points of discussion (at the solution and software levels):
Which integration patterns to use:
REST / SOAP / OData / messaging / streaming
Push or pull
Point-to-point or using middleware
Which other systems to integrate with
Which app is responsible for which functionality
Where to deploy the application
How generic should certain functionality be (will we hard code a list of questions, or will we create a structure to create any question with any answer)
How do we handle very large amounts of data
How do we handle sensitive data and privacy requirements
What app store content do we use, and what kind of support do we require on these components
At the end of the day, you are creating bespoke software. Any architecture considerations that you would have on a Java or .Net project are just as relevant on a Mendix project. Sometimes, the solution is very simple, as Mendix forces a solution on you, but other times the options you have a equally as diverse as with any other technology, and they require the same analysis and cost/benefit evaluation.