Note that there are some explanatory texts on larger screens.

plurals
  1. POBuilding a fault-tolerant soft real-time web application with Erlang/OTP
    primarykey
    data
    text
    <p>I would like to build a fault-tolerant soft real-time web application for a pizza delivery shop. It should help the pizza shop to accept phone calls from customers, put them as orders into the system (via a CRM web client) and help the dispatchers to assign delivery drivers to the orders. </p> <p>These goals are nothing unusual, but I would like to make the service available 24/7, i.e. to make it fault-tolerant. Moreover, I would like to make it work very fast and to be very responsive. </p> <p>Below is a very simple architecture view for such an application.</p> <p><img src="https://i.stack.imgur.com/rZl2f.jpg" alt="pizza delivery shop orders system"></p> <p>The problem is that I do not know how to use all of the Erlang/OTP goodness to make the application very responsive and fault tolerant.</p> <p>Here are my questions:</p> <ol> <li>Which system elements should be replicated in order to provide fault-tolerance and how should I do that? I know that I can store the status of each vehicle (coordinates, assigned orders, etc.) in a replicated Mnesia database. Is that a right way to go? </li> <li>Which data-storage services should be conventional SQL-based (e.g. based on <a href="https://github.com/evanmiller/boss_db" rel="nofollow noreferrer">boss_db</a>) and which should be done on Mnesia to provide for very fast response? Is it ok to use a conventional SQL database to store customer records and history in a such fault-tolerant and highly-responsive application?</li> <li>Should I try to store all the data for all the services (customers, vehicles status, etc.) in RAM in order to make the application highly-responsive?</li> <li>Should I store the persistent vehicle data (id, capacity, etc.) in a conventional SQL database and store the real-time data (coordinates, assigned orders, orders in the trunk, etc.) in a Mnesia database to make the application more real-time responsive?</li> </ol>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload