Сегодня день на расслабоне, поэтому поделюсь всякими капитанскими советами, многие из которых из личной практики.
Некоторые из этих ошибок/просчётов стали причиной закрытия нашего стартапа.
Отсутствие задокументированного плана/родмепа.
Если вы как-то свои цели документируете, то потом сложнее их менять. А если вы, всё же, их меняете, то есть тому подтверждение.
Когда же это всё только в вашей голове, то вы постоянно будете отклоняться от выбранного курса.
Это очень важно и в геймдеве, и просто у стартапов. Тут ещё можно про MVP рассказать.
Но, как по мне, лучше посмотреть одно видео от Майкла (одного из создателей Твича).
youtube.com/watch?v=1hHMwL…
Сложность проектов не должна резко скакать. Мы резко переключились с небольших сингловых игр сразу на MOBA с потенциально большим онлайном.
Из-за этого прошли через всевозможные ошибки и кучу шишек набили.
Нужно было сначала взяться за проект поменьше.
Если же вы взялись за что-то новое и у вас не хватает опыта, то не стесняйтесь найти ментора или того, кто вам на этом пути поможет.
Самый глупый вопрос — это незаданный вопрос.
Не экономьте на специалистах. Если у вас в команде нет бекендщика/девопса, то, вполне вероятно, лучше нанять отдельного человека, чем кому-то из текущих фронтендщиков начинать это дело изучать.
Быстрые итерации и mvp на первых порах. Зачем вам k8s или другая подобная система на первых порах? Вполне возможно, что сервисные инстансы можно запускать ручками. И виртуалки поднимать ручками.
А уже потом по мере роста переводить всё на новую инфраструктуру.
Сказал вам человек, который на первых порах все виртуалки настраивал с помощью bash-скриптов.
К счастью, через какое-то время я изучил Ansible и, как минимум, процесс диплоя стал куда проще и приятней.
Правильно ли я поступил, что сначала по-быстрому наговнякал скрипты на баше, а должен был взять Ansible или Puppet? Стоил ли Ansible тех время затрат, что я на него потратил?
Думаю, да (:
А вот о том, что кучу времени потратил зря, пытаясь прикрутить Apache Mesos или Kubernetes (который на то время был в бете), жалею.
Для меня это было полезно в плане расширения кругозора, конечно, но для компании/стартапа никакого толка.
Перед использованием какой-то технологии почитайте подробно про возможности и лимиты. А так же прогоните под стресс-нагрузкой.
У нас, к примеру, при определённой нагрузке кластер Rabbitmq просто разваливался.
Если в инфраструктуре есть какие-то кластерные штуки или мастер-мастер/мастер-слейв сервисы, то не поленитесь провести тесты того, как система себя поведёт, если ноды откажут.
Мы так обосрались с Redis'ом и consul'ом, т. к. там фолбек не сработал нормально.
И не забудьте убедиться, что сервисы, которые юзают Редис/Консул и т. п, нормально динамически справятся с тем, что там сменился мастер.
Совет неоднозначный, но возможно вам не нужно всё держать/настраивать самим.
К примеру, может не стоит самим поднимать Графит с Графаной у себя, а использовать какой-то готовый сервис для метрик типа Datadog'а.
Дурацкое решение №1: мы в какой-то момент решили разделить игру по регионам. Да, когда у нас там играло полтора рудокопа.
В итоге куча времени на настройку, проверку. Потом ещё на написание механизма миграции между регионами.
Дурацкое решение №2: покупки на Твиче. Мы договорились с twitch'ом, чтобы на странице игры можно было совершать внутриигровые покупки.
После привязки Твич аккаунта к игровому, игрок мог получить эту награду.
Сил и времени потратил дофига, а покупок не было совсем 🤣
Дурацкое решение №3: Battle Royale режим. Да, на волне хайпа решили запилит такой режим. Но т.к. онлайн в игре небольшой был, то в этом режиме были практически одни боты.
Куча времени на этот режим, на AI. Оно того не стоило.
Почти всё можно свести к двумя вещам:
1 - Итерируйте быстро и не пытайтесь предусмотреть и реализовать всё.
2 - Но закладывайте возможность доработок и модификаций в будущем.
Многие почему-то к проектам относятся так, будто он у них единственный и обязательно должен выстрелить.
У некоторых основателей и/или игроделов выстреливает проект только после 10 провальных попыток.
Если не получается, просто отпусти, а оставшиеся ресурсы пусти на новый проект. У вас уже есть опыт, да и скил прокачался. Шанс успеха возрастает.
Пробуйте снова и снова. Когда-нибудь у вас всё получится.
Андрей Апанасик