I have an executable written in Fortran that I'm looking to run beneath a Web App (ie. the front end). The Web App will invoke the executable - most probably multiple instances. The Web App will provide a means for the user to upload input for the executable and download the output. The end game is to have the whole thing hosted using Amazon Web Services (or similar) - Web App and executables on EC2 instances and data storage using S3.
The executable was recently updated to optimise performance and run some tasks in parallel (ie. multithreading using OpenMP and some mathematical operations performed using the Intel MKL et al.). In the past, the application has been run locally on a decent workstation with input and output processed manually.
Question: I can run the executable (when compiled for Windows) from calls initiated from a Web Service. But that would mean (I think) the executable would actually be running on the web server - consuming CPU capacity. The executable when running would typically have one to two cores running at 100%. Ideally, I'd like to have the web server completely devoted to the Web App and the number crunching done on other machines - preferably Linux instances (as they're a fair bit cheaper on AWS). Is there a programming model, pattern or service that would provide this capability?
(I suspect I'm seeking some form of 'scalability' and that this should be quite straight forward. I doubt I'm the first person to ever seek to 'hide' multiple instances of an executable beneath a web page. Unfortunately, as an enthusiastic amateur when it comes to software development, I fear that I don't have the vocabulary to label the actual capability I'm seeking. Keywords, topic suggestions, examples or links to references/required-reading are very welcome.)
Best,
Alex.
Aucun commentaire:
Enregistrer un commentaire