I was recently asked whether it was possible to work out which resources will be used by an application before it runs. In theory, it is not possible to do that without solving the halting problem, but in real life applications often do the same thing over and over again. This makes it possible to know roughly what an application will do most of the time.
This is how we help our customers create and maintain a bill of materials so that they are ready with the info when it is really needed.
When migrating applications to the cloud or containerizing workloads, you need to know which files, programs, libraries and network locations are going to be accessed. You can find this information by trial and error or by reading the source code, but executing the application or workflow in real life is much quicker than doing it in your head.
Breeze can trace your application and give you a list of everything you use. For one of our customers this cut down the migration time from three weeks down to a day for complex workloads!
Application correctness and performance
Checking application dependencies before you release new software is also an easy way to sanity-check for application correctness. Including the wrong files or libraries in a build or release process can harm the correctness and performance of an application and, in some cases, affect the licence too. The good news is that it is really each to check and fix.
One of our customers started to run dependency checks before shipping a new release to a customer. Breeze lists the dependencies of your application so you can quickly see which paths have been accessed.
Developer Support Engineer, Jenson Ho, checked file dependencies using Breeze, including the symlinks and their designations. He was able to identify some hard-coded paths that would otherwise have been released with the product. This would have prevented the tool from working on their customer’s site.
“The initial fix reduced the grid load, but did not fully fix the hard-coded path. We were then able to use Ellexus Breeze to continue to audit and check until the hard-coded path was fully removed.”
Jenson Ho, Developer Support Engineer at Mentor Graphics
How to use Breeze to determine application file and network dependencies
The easiest way to check for application dependencies is to trace an application with Breeze then use the commandline API to export the list of files it has used from the trace. Breeze can condense this to mount points if that is the granularity you need, but most of the time the list of files is more useful.
<Breeze install>/trace-program.sh -f /tmp/traceDir ./myapplication <args> <Breeze install>/breezeAP.sh /tmp/traceDir -y dependencies -f txt -o ~/outDir
By regularly running a bill of materials on workflows as part of a regression test or a workflow qualification framework, you can make it easier to track the use of slow libraries, open source code and the use of shared file systems. This is a first step to ensuring applications are fast, agile and cloud-ready.