Создание отказоустойчивого мягкого веб-приложения в реальном времени с Erlang / OTP

Я хотел бы создать отказоустойчивое мягкое веб-приложение в реальном времени для магазина доставки пиццы. Это должно помочь магазину пиццы принимать телефонные звонки от клиентов, размещать их как заказы в системе (через веб-клиент CRM) и помогать диспетчерам назначать драйверы доставки для заказов.

В этих целях нет ничего необычного, но я хотел бы сделать сервис доступным 24/7, то есть сделать его отказоустойчивым. Более того, я бы хотел, чтобы он работал очень быстро и был очень отзывчивым.

Ниже приведен очень простой вид архитектуры для такого приложения.

pizza delivery shop orders system

Проблема в том, что я не знаю, как использовать все достоинства Erlang / OTP, чтобы сделать приложение очень отзывчивым и отказоустойчивым.

Вот мои вопросы:

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? Which data-storage services should be conventional SQL-based (e.g. based on boss_db) 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? 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? 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?

Ответы на вопрос(2)

Ваш ответ на вопрос