MathML Cloud Architecture

compared with
Current by John Brugge
on Sep 02, 2015 09:29.

Key
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (12)

View Page History
h1. Overview

h1. Code Libraries

MathML Cloud, as developed by Benetech, consists of two code libraries:
# An API, built on Sails.js, a server-based Javascript framework similar to Rails. This is publicly available code that does the math transformations on the server, using MathJax and the Speech Rules Engine, and persists the results in a MongoDB database.
#* https://github.com/benetech/mmlc-api
# A browser-based app, built on Backbone.js. This is a private repository code since it contains Benetech-specific terms of use. It presents a web-based interface that makes use of the MMLC API to do most of its work. demonstrate the features available.
## Entering equations in various formats, and requesting output in different formats
## Reviewing and commenting on the results
## User administration
h1. Runtime Architecture

The Benetech-hosted runtime of MathML Cloud is currently hosted on Microsoft Azure in a Linux VM, with MongoDB hosted by the MongoLab service. There is a staging and live environment which are virtually identical.

While the separation of concerns between the app and the API allow them to be hosted separately, in the Azure environment we have made some compromises.
*# Current URL: https://mathmlcloud.org
*# Ideal deployment: static storage
*# Current deployment: shared API VM, under mathml-cloud/assets directory (simplifies deployment)
* API
*# Ideal URL: https://api.mathmlcloud.org
*# Current URL: https://mathmlcloud.org (Azure API Management tool is new and not stable enough)
*# Ideal deployment: Linux VM
*# Current deployment: Linux VM
From the Azure Portal API Management help window:

{quote}
bq. “Publish APIs to developers, partners and employees securely and at scale.
* Scale to millions of API calls
* Throttle, rate limit and quota your APIs
* Get deep insights with rich analytics
For an overview of API Management, see [http://azure.microsoft.com/en-us/services/api-management/].”
{quote}

When we make use of Azure’s API Management, a developer would sign up for a developer key and then send all requests to api.mathmlcloud.org instead of mathmlcloud.org. The API Management Service would receive the request, do what it does, and then send the request through to mathmlcloud.org.

One of the key features that API management gives you is control over endpoint traffic and client access. If a malicious hacker wanted to, they could write a script that sends thousands of requests to mathmlcloud.org/equation per second and take down the site. If we were using Azure’s API Management system, they would have to sign up for a developer key.
One of the key features that API management gives you is control over endpoint traffic and client access. If a malicious hacker wanted to, they could write a script that sends thousands of requests per second to mathmlcloud.org/equation and take down the site. If we were using Azure’s API Management system, the only way they would be allowed access to the API would be to sign up for a developer key and then present that key with each API call.
# We now know who they are
# We are be able to throttle their requests to a reasonable amount
h2. Resources

* Azure Management Console: https://manage.windowsazure.com/benetechmail.microsoftonline.com#Workspaces/All/dashboard
* RESTful API definition: http://www.restapitutorial.com/lessons/whatisrest.html
* API definition: http://www.theguardian.com/media/pda/2007/dec/14/thenutshellabeginnersguide