In this blog, I will tell you how Mansystems’ APM Tool evolved into the tool it is now. APM Tool is not a premeditated product, it was initiated and has grown over time, to solve challenges. Ultimately, it became a solution that is used by the Mendix community and is a part of Mendix platform.
We call the tool APM Tool because it meets the common definition on the wiki:
Application performance management (APM) is the monitoring and management of performance and availability of software applications. APM strives to detect and diagnose complex application performance problems to maintain an expected level of service. APM is "the translation of IT metrics into business meaning ([i.e.] value)."
It differs from generic APM solutions, in that it is designed specifically for Mendix. It looks at Mendix Apps under the hood. Let me describe how this all came to be.
Mansystems became a Mendix partner in 2010 and developed a large application, which we’ve sold to several customers, from 2011 onward and mostly on premise at the time.
That large application was developed by a team of 3 under my lead. We started in a beta of Mendix 2.5. Naturally, when the first customers went live, we needed to support this application. And as it turns out, customers sometimes use the application a little different than expected and can run into performance issues.
These performance issues had to be solved and our support team came to me, asking how? It took me a lot of time to analyze the issues and pinpoint the exact action that caused decreased performance. Since Mendix logging contains information about microflows and actions, I developed a tool to collect and present performance information in a such way, that the developer could read it.
The first release, in 2012, contained the performance and log tool, which gave our support team access to on premise logging a lot faster and helped our support team solve performance issues.
On using this tooling, we gained experience and we had new ideas for functionality, that would make our lives easier. First, we noticed that the performance tool is a recorder. But it could not record everything all the time. Therefore, we created a statistics tool, that listens continuously and makes daily snapshots of statistics. This helped us gain insight in the behavior of the App at the customer and detect trends.
Second, we had experienced problems with certain issues, for which we did not have the right information and needed extra logging. Turning on all logging all the time is not possible. That would cause disk space to fill up and cause a decreased performance on itself. Going back-and-forth to the customer, turning logging on and off while trying to catch the error, leads to trial-and-error solving and unhappy customers.
For this purpose, we developed a tool called the trap-tool that listens to all Mendix logging up to the highest (TRACE) level and remembers the last couple of seconds. When an error occurs, these last seconds of logging are written to the database. You can compare this tool to an airplane’s flight data recorder.
Over time the APM Tool evolved with more specialist tools to handle specific cases. For example, to address out-of-memory issues, a measurements tool was developed, that measures memory and triggers on say 70% memory usage to store trap-data, a statistics snapshot or a heap dump to be analyzed, when necessary.
At time of writing, APM Tool is implemented at each and every Mansystems customer, as part of their support contract. All our consultants know and use the tool.
In 2015 we started thinking about selling this tool to Mendix customers. The tool had proven itself to us and the tool had a very technical interface. That’s why, we started focusing more on the UX of the APM Tool. We also wrote a user manual for the tools and started a campaign to give the community a chance to try the tool.
In addition to acquiring some new customers, this initiated talks with Mendix, leading to the announcement at Mendix World, that APM Tool was adopted by Mendix as a part of Mendix 7. Since that moment, we have been working hard on an even better UX, converting our documentation to become a part of the Mendix documentation, giving presentations, training, webinars and more.
The next big thing for APM Tool will be making the tool independent of the Mendix model. To make APM Tool a separate agent that communicates with the App and with a central cloud based solution, while integrating APM Tool in the Mendix eco-system.
2017 will be an interesting year!
A picture says more than a thousand words, here is the history in screenshots: