Рубрики
Без рубрики

Lgtm Devlog 5: Технические решения – Без сервера архитектура

Далее в наших технических решениях мы должны принять, как и где мы принимаем эту вещь? Мы установили … Tagged с DevJournal, GitHub, Serverless, Python.

LGTM (40 частей серии)

Далее в наших технических решениях мы должны принять, как и где мы принимаем эту вещь? Мы установили несколько вещей, которые окрашивают наше решение:

  • Нам нужно получить GitHub Webhooks, так как мы должны быть уведомлены о вилках.
  • Нам нужно опросить API уведомлений GitHub, чтобы получить информацию о том, когда возникают комментарии и другие вещи
  • Нам нужно где -нибудь запустить наш игровой код, и это, вероятно, будет в Python
  • Мы должны отслеживать выполнение задач пользователя, поэтому Требуется база данных

У меня тоже было гораздо больше мыслей, о которых я не написал, но имею последствия технической реализации:

  • GitHub API имеет квоты использования, и может потерпеть неудачу, если мы попытаемся сделать слишком много вещей одновременно. Это означает, что нам нужен наш код для обработки повторных переписей.
  • Для реализма мы можем захотеть запланировать вещи на таймере. На самом деле, вообще не очень важно что-то в режиме реального времени. Когда игрок подает результат, нам нужно только реагировать в течение нескольких десятков секунд. Это значительно упрощает требования

У меня уже есть сильные предпочтения Google Cloud, в основном из -за знакомства. Это чувствует Как Google Firebase будет работать очень хорошо: у нее есть облачные функции, которые могут получать веб -крючки, если не запускать весь наш стек игры; Firestore является подходящей базой данных для хранения наших игровых данных; И, кроме того, хостинг будет здорово запустить веб -сайт (который показывает статистику и прочее), и мы можем также использовать службу автозаправления для управления учетными записями пользователей (даже если регистрация не будет традиционным делом по электронной почте/пароля) Анкет

Для требований очереди задач может показаться, что облачные задачи Google будут выполнены для работы и, по-видимому, хорошо работают с Firebase и являются необходимым предварительным условием для разрешения запланированных задач (что, вероятно, потребуется для контроля опроса уведомлений API)

Поэтому наш технический стек:

  • Функции Firebase (работающий Python)
  • Firebase Auth
  • Firestore
  • Облачные задачи

Все это вместе означает, что я смогу построить игру без сервера!

Имея это в виду, архитектура выглядит примерно так:

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

А также, эти диаграммы не являются полной картиной, я уже могу представить себе много других вещей, которые необходимо добавить – база данных для игровых данных и учетных записей игрока; интернационализация; и веб -сайт для игрока, чтобы посмотреть на их статистику и детали и сделать другие вещи с их учетной записью, которые мы не можем через интерфейс GIT/GitHub; и OAuth, чтобы позволить игрокам войти в веб -интерфейс. Список можно продолжить, и полная диаграмма может быть еще более сложной, чем эта:

Я думаю, что это хорошее место для принятия технических и архитектурных решений. Мы можем начать работать с этим, что мы будем вкладывать вещи на Firebase

LGTM (40 частей серии)

Оригинал: “https://dev.to/meseta/lgtm-devlog-5-technical-decisions-serverless-architecture-5e7f”