1. Выбор темы

Проект кликер на мобильные устройства

Оценка скачиваний по статистике гугл-плей

  • 10 млн
  • 1 млн
  • 1 млн
  • 1 млн
  • 10 тыс
  • 10 тыс
  • 500 тыс
  • 1 млн
  • 100 тыс
  • 10 млн

Итог: 2.461 млн * 2 (iOS) = 5 млн скачиваний

2. Определение возможного диапазона нагрузок подобного проекта

3. Выбор планируемой нагрузки (например 30% доля рынка в России)

Предположим, что постоянно играет 10 % аудитории = 5 млн * 10% = [500 тыс онлайн]

4. Логическая схема базы данных (без выбора СУБД)

alt-текст

Данные пользователя: ~ 100 Б Данные на 1 игру ~ 1-2 кБ

5. Физическая системы хранения (конкретные СУБД, шардинг, расчет нагрузки, обоснование реализуемости на основе результатов нагрузочного тестирования)

Требуемое время ответа: 70 мс Время связи с игровым сервером (пинг): 50 мс Время серверу на формирование ответа: 20 мс

Ограничивающий фактор - производительность Redis на чтение при одновременной записи

Ориентировочная производительность 20 к. запросов/с Redis. (уточнение после нагрузочного)

-> 500к / 20к = 25 шардов Redis.

Количество соединений которые могут держать шарды Reids: 20000 * 25 = 500000 соед.

Производительность сервера Go больше производительность Redis -> оцениваем количество бэков по числу шардов Redis -> 25 бэков.

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