@Mark Barge The Performance and Scale doc covers many of the questions you have and would be an informative read to understand more about how Durable Functions work.
Firstly, to get more compute while still being elastic, you could simply upgrade to the Premium Plan which offers instances with more cores. Do note that there is a limit on how far you can scale-out per region. You can open a support request to increase these limits.
Next, considering that your requirement is compute intensive, it would be best to control concurrency to ensure only a few activities are running at the same time. There are Concurrency Throttles that you can setup at the host level (per instance).
With the above, you should be able to achieve optimum throughput and still ensure all queued requests are processed.
Another enhancement would be to leverage the Event Grid Trigger alternate instead of polling blob storage.
@Mark Barge Glad I could help! That definitely is a solution for the spin up delay since that is by design for serverless operations.
While Durable Functions is the best option here with minimal engineering effort required, another approach you can explore is to offload the heavy processing to Azure Container Instances.
You could still use Durable Functions to orchestrate the entire workflow and just start a Container Instance on the fly for the heavy processing. You can leverage the corresponding SDK based on your language of choice (which are essentially wrappers over the REST API) to manage container instances as required.
Note that this service has its own set of limits as well but considering your use case, you might be able to leverage GPUs in Container Instances to cut down on time taken for processing.
PS: I haven't really done any GPGPU based programming before, so I might be wrong about using them here but just a thought. :)
Hi Pramod
Accessing GPUs would be game changing here. The calculations involved are large numbers of Monte Carlo simulations so the more processors I can bring to the table the faster it will run. Currently a large financial projection can involve hundreds of thousands of multi dimensional matrix numbers which can take many minutes to complete.
I will certainly explore your suggestion on GPUs in Container Instances.
Thanks!