My objective is to get from an algorithmically sound software prototype to a SaaS API product.

To give a similar and illustrative example, suppose that I have prototyped scalable facial recognition software in a high level language like Matlab; this algorithm takes a real world image as input and detects and recognizes, say, celebrity faces. It's accurate and decently optimized, running about ~2 seconds per image on a 2.4 GHz processor. In C, it should run ~0.5 seconds per image.

The goal is to get from a Matlab prototype to a cloud based API service that can scale massive amounts of image data. An initial test product should be to handle ~100 calls per second, but in the long term it should be able to handle >10,000 calls per second. This will eventually be combined with a web crawling application to scale all the web's image data.

Given the source code of the prototype, how to build, test and deploy this in a scalable way?

My background is math and algorithms rather than software and systems engineering.

migration rejected from pm.stackexchange.com Mar 27 at 16:33

This question came from our site for project managers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as too broad by Thomas Owens Mar 27 at 16:33

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    @Tibo agreed. This question is too broad right now. There are many options, and the fact that the core service is prototyped in matlab may have little impact on the final architecture – Simon Bergot Apr 2 '14 at 14:21
  • 1
    @user124370 to your original question about team dynamics, you might consider stopping by Software Engineering Chat and asking that question (you've got 20+ rep elsewhere on the SE network so you should be able to join us there). – user40980 Apr 2 '14 at 14:59
  • First tell us more about you, what are you ? A reserchers who just implement the code for their research or a developer with a proper formation about coding properly and in a way that it's scalable (performance-wise, but in terms of code too if the application grow) ? If the first, contact someone of the second profile, if the second you should already know the basics needed for your answer at least to be able to handle 100 call/s, to increase the ration, you will need a proper team : a sysadmin, a software architect you don't make a 10k requests per second site out of the blue. – Walfrat Dec 13 '16 at 15:17

You need to learn or work with someone knowledgeable in full-stack web development. To share my experience, my team and I built SaturnAPI using Octave (the open-source Matlab clone). It provides hosting for your scripts as well as a RESTful API you can use to access it. Here's a visual of how it works:

Figure 1. Basic flow of HTTP traffic between your web app and SaturnAPI.

Your script is hosted on the SaturnAPI server and accepts SaturnParams as input, which is provided by the incoming HTTP request from your web app. SaturnParams can be a string, number, array or cell array. The cell array allows various data types to be passed into the API.

Once inside the server, the script runs with the SaturnParams and the output is sent as the HTTP response back to the originating server (i.e., your web app). You can see that with this method you can use whatever script you like.

Accomplishing all that was by no means a trivial matter, as you have to set up the web server to accept and respond to HTTP requests. You then have to build an interface for users to upload and test their scripts, which involves managing a database on the server. How you make all that scalable do load-balacing is a whole feat in itself. The overall technologies we use for SaturnAPI is exactly what you're asking about. If you have further questions, I am happy to share more.

Not the answer you're looking for? Browse other questions tagged or ask your own question.