Do you feel the need for speed?
Do you feel the need for speed? by Mendix
Today, we have a guest post from Bart Tolen, Mendix specialist with our partner Mansystems and part of the inaugural class of Mendix MVPs announced today. With more than 20 years of software development experience, Bart has spent the last five years focused on developing with Mendix and performance management of Mendix applications.
Many tools offer you increased productivity. There are a lot of different tools on the market and it’s often difficult to choose the right tool for the job. In 2010, Mansystems selected Mendix for the promise of easy and fast development. Back then, Mendix had been around a few years and was at version 2.5. I consider myself as an early adopter of the Mendix platform. Since then they have released several new versions and reached into the cloud, mobile and a lot more. This blog describes my experience with the Mendix platform over the years. I will share why working in Mendix is so fast and also what Mansystems has done to make their projects even faster.
Firstly, I will address the speed of development. Mendix refers to independent research carried out by QSM that shows that a large development project in Mendix is, on average, six times faster compared to the same project in Java!! We have a similar experience.
6 times faster? Yes, 6 times faster!
Why is Mendix faster?
Mendix uses several types of visual diagrams that they call domain specific languages (or DSLs). The DSL for business logic is called ‘microflows’. With microflows you can manipulate data and perform actions like opening forms, calling web services and a lot more.
Microflows are used for everything from GUI buttons, to scheduled events, to calculated attributes, to web service handling, to domain model events (triggers on a change of data). Microflows can call other microflows and you can use a functional programming style if you like.
In the DSL for the domain model, you design your data structure with entities, attributes and associations. The following features support fast development:
- The simple overview, so you don’t need separate documentation for your data model;
- Creating relations with an arrow, even for many-to-many relations, that are completely handled and maintained by Mendix;
- The inheritance of entities allowing for object-oriented thinking and re-use;
- Non-persistent entities, meaning they are not stored in the database. This allows you to build Mendix as a layer on top of other applications without the need to store duplicates of the data;
- You can add calculated attributes to entities that use the same Microflows DSL as all other business logic.
Of course, there is a DSL for the GUI with layouts, forms and snippets. I suggest you take a tour at Mendix if you are interested by now. You are also welcome to drop me a line (see contact details below). I will proceed beyond the visual ease of use into some of the less visible, but certainly not less powerful, features.
The consistency checks are very powerful. You cannot start a model if it is inconsistent and the errors point you directly to the place where they occur. If I remove the first action in the Microflow above, the following errors appear:
So while building (coding, developing, modeling, give it a name!) the tool helps you create software that plays by the rules. This removes a lot of potential errors and therefore saves a lot of time!
The easy extendibility and integrations are very powerful too:
- Easy (visual mapped) web services;
- Between Mendix applications even better (faster, easier) AppServices;
- Java actions that generate a full class for you with parameters and return values for the microflow, so you just have to add a few lines of code between //BEGIN USER CODE and //END USER CODE;
- And an App Store to share all of the above;
Finally, the eco system in which the developer does his job is just great. To mention a few benefits of the ecosystem:
- A built in source control system, called the team server, that saves the revisions in the cloud;
- Running the application locally by pressing the ‘run’ button;
- Deploying and running your application in the cloud by pressing another ‘run’ button;
- Debugging with a graphical, interactive debugger that can also connect to cloud environments;
- Asking questions on the forum and getting reliable answers fast;
- A great community sharing work in the App Store;
- A cloud portal for full management of your production environment in the cloud.
The additions we developed to make Mendix even more powerful
We have learned that testing is becoming a big part of a Mendix project. When testing manually, the testing time is getting relatively large compared to the building time. Over time when a project becomes a release and new features are added, the testing effort becomes even larger.
Mansystems has developed the Mansystems Test Framework (MTF) to address automated testing. This framework is designed with speed and ease of use in mind. So people who do not build or model in the Mendix Business Modeler can still create test scripts. Of course, creating test scripts takes time and the first time maybe a bit more than it takes to do a manual test. But in automating your test, you get your huge returns with future iterations. If you would perform a regression test for each deployment to subsequently a development, test, acceptance and production environment, you would use of the automated test script four times. And since we are all working Agile, the future will have an endless amount of iterations J.
A complex ecosystem like that of Mendix is sometimes also difficult to support. You need tooling to find complex bugs. At Mansystems, we have built tooling that makes all kinds of support information available and especially a tool that listens to all log messages, even those internal trace messages. When an error occurs, this tool stores the last seconds before the error to the database. That is similar to your airplane’s flight data recorder. For more information on this topic, read my other blog on solving common helpdesk problems.
Also, platform tools can suffer from performance issues and to address those you need tooling as well. In yet another blog, I describe when and how to handle performance issues by making use of the performance and statistics tool in Mansystems’ APM Tools suite.
To conclude , I believe with Mendix you can develop your apps at least six times faster than classic developments anno 2015. This means that what would take half a year in the past now only takes a month! And with the right tooling and the right people, you can maintain this development speed in the long run.