Потратьте 5 минут времени и выясните все возможные варианты использования поставленной перед вами задачи.

Шаг 1. Варианты использования

  1. Как, когда будут добавляться данные?
  2. Как данные будут обновляться/редактироваться?
  3. Как данные будут удалены или просрочены?
  4. Запрос будет исходить от API или UI?
  5. Нужна ли статистика данных?
  6. Конечно, высокая доступность обязательна

Шаг 2. Ограничения. Чаще всего необходимо учитывать следующее:

1. Объем трафика, который должна обрабатывать система: количество/частота операций чтения или записи. Это должно быть отклонено, чтобы запрашивать в секунду после выполнения всех расчетов.

2. Объем данных, который необходимо обработать системе

Шаг 3. Абстрактный дизайн: HLD (дизайн высокого уровня)

Очевидно, здесь у нас будет какая-то идея о том, какую структуру данных или вид программного компонента вы будете использовать для разработки этой системы.

Отвратительная шутка о том, как рисовать абстрактный дизайн

После заключения брака, особенно в Индии, мы знаем, кто (дядя, брат, сосед) будет выполнять какую работу. Нравится :

Кто забронирует Зал Бракосочетания

Кто распечатает карту

Кто позаботится о Кейтеринге бла.. бла… бла

Просто соберите все компоненты вместе и нарисуйте схему.

Технический аспект

Какой компонент структуры данных вы будете использовать и как и какие данные будут храниться, например:

  1. HashMap или связанная HashMap, ArrayList, Kafka, RabitMQ, Cassandara
  2. Что все придет в Ключи и ценности
  3. На постоянной основе, что мы будем делать и т. д. и т. д. и т. д.………

Низкоуровневый дизайн:здесь мы можем начать определение моделей классов, дизайна БД и нескольких классов драйверов, если позволяет время ИЛИ некоторое время фактического кода.

Шаг 4. Параллелизм.Обсудите, как вы будете обрабатывать параллелизм в своем дизайне, о чем вы говорили выше. При необходимости внесите изменения в вашу систему

Шаг 5. Масштабируемость.Подумайте, вдруг у вас нет трафика. запросов в секунду увеличивается, тогда что вы можете сделать, чтобы разместить его.