digital-garden/_inbox/Анализ данных проекта.md
2024-06-13 21:01:37 +03:00

4.2 KiB
Raw Blame History

aliases tags date zero-link parents linked
зрелость/🌱
2024-03-19
00 Архитектура ПО

Нам нужно выяснить всё о данных в вашем проекте. Всё - это вообще всё.

Примеры вопросов:

  • Какие есть данные?
  • Как они связаны друг с другом?
  • Сколько данных каждого типа?
  • Какие минимальные, максимальные и средние размеры у данных каждого типа?
  • Сколько актуальных данных?
  • Как определяется актуальность данных?
  • Как быстро растёт объём данных?
  • Как часто данные читаются?

Какие у нас есть данные?

Нам нужно составить схему движения данных внутри вашего проекта. Простой пример - пользователь публикует текстовый пост в френдленту. Вопросы, ответы на которые вы должны получить у менеджера проекта (или прикинуть самим, мы обычно прикидываем сами и предлагаем менеджеру или заказчику конкретное значение):

  • Какого размера может быть пост? Минимальный, максимальный и средний размер? / Кстати, ограничениедолжно быть, ограничения есть всегда и это не спроста /
  • Сколько постов может быть у одного пользователя?
  • Сколько в среднем у пользователя постов?
  • Как часто пользователь может публиковать посты?
  • Сколько постов публикуется в день?
  • Сколько всего постов в системе?
  • Как долго должны храниться посты?
  • Можно ли прочитать архивные посты?
  • Сколько всего пользователей в системе?
  • Сколько в среднем у пользователя друзей?
  • Сколько максимум у пользователя друзей?
  • Как быстро пользователь должен увидеть свой пост?
  • Как быстро пользователь должен увидеть пост друга в своей френдленте?
  • Как сортируются посты в френдленте друзей?

В сухом остатке, вы должны точно понимать, что у вас есть за данные, какие эти данные, как эти данные изменяются.

Как данные будут использоваться?

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

Показ данных пользователю - это тоже использование, причём использование, которое обладает одним критичным свойством - в случае, если мы проектируем с вами веб-систему, то показ данных пользователю должен быть максимально быстрым. Пользователь не будет ждать. Мы должны придумать такую схему хранения данных, которая позволит максимально быстро обработать ЛЮБОЙ запрос пользователя.