Salvus

Distributed Scalable Online Mathematical Software

William Stein

University of Washington

Screencast of talk (part 1 of 2)

Screencast of talk (part 2 of 2)

Project Goals

Related Projects

sage-support mailing list a few days ago

On Wed, Sep 26, 2012 at 9:54 AM, Chris Seberino  wrote:
> I have a Xen Ubuntu Linux 1 Gb RAM virtual machine  from a provider 
> called Linode.
>

Linode charges $39.95/month for your 1GB machine.  For a 4GB machine,
which would be more likely to work well, you would have to pay
$159.95/month.

My plan with http://salv.us/ -- which I'm working hard on right now --
is to buy a bunch of hardware (mostly done), host it at UW, write much
better more efficient software to make Sage ("highly") available
through it, and provide enough guaranteed resources for a class like
you have... for *substantially* less than $159.95/month, since the
monthly hosting and network fees I have to pay at UW are super-cheap.

Stay tuned...

 -- William

Longterm Programing Goals (part 1)

Longterm Programing Goals (part 2)

Approach to Salvus

My entire approach to Salvus is the exact opposite of the monolithic single-point-of-failure Sage notebook:

Physical Hardware and Remote VM's

Fixed monthly costs

Revenue Model

I've written 100% of the new code in Salvus. It is not open source, though all the third party components it builds on are. I will open source some key pieces of it over time, since they will also be useful for research mathematics applications.

Other Longterm Revenue

The Salvus Stack

Architecture Diagram

   Client    Client    Client   Client   Client  Client
     /|\
      |       (sockjs)
   Stunnels ... (https://salv.us)
      |     
      |
     \|/ 
 HAProxy Load Balancers  ...  Nginx static servers ...
 /|\       /|\      /|\      /|\
  |         |        |        |           [tinc vpn]
  |https1.1 |        |        |                                     
 \|/       \|/      \|/      \|/                                      
Tornado  Tornado  Tornado  Tornado    <------------------>   Cassandra   ...
           /|\      /|\                                         /|\
            |        |        -----------------------------------|
   ---------|        |        |                                         
   |                 |        |
   |                 |        |
  \|/               \|/      \|/
 SageServer   SageServer  SageServer   SageServer ...

Client/server communication

Virtualization: libvirt + kvm

Private Cloud Distributions

VPN: Motivation

VPN I chose: tinc

Database: the memory of Salvus

The database is the only persistent component of Salvus. It stores everybody's data -- it's the memory of what the system is. It's thus an absolutely crucial component of the design.

Database: noSQL

Database: Apache Cassandra

SSL: stunnel

Load balancing: haproxy

The stunnel process directs all requests to another program called haproxy (which can be running on a different computer or the same computer).

Static HTTP: nginx

Dynamic HTTP: Tornado

More about Tornado

Math/compute: forking tcp-based Sage server

Service Management: approaches

Service Management: Paramiko

Summary: Salvus Architectural Axioms

Next Talk









Demos showing how these components actually work...