Всем привет. Сегодня я расскажу об одном из направлений Wargaming Platform — Tools, и поделюсь взглядом новоприбывшего на систему тулов. Система Platform Tools состоит из Core Tools и остальной части сервисов, которые используются для настройки, поддержки и управления различными механиками игр (например, управления доступом к возможности участвовать в турнире), витринами в магазинах. Именно в Core Tools собраны общие подходы и механизмы для всех остальных сервисов, чтобы унифицировать и задать единый способ реализации общих задач, таких как сервис единой авторизации, саппорт, платёжный сервис, рассылку нотификаций и многое другое. Наша цель — сделать тулы с единым поведением, интуитивным UI, похожими процессами, чтобы для человека, который оперирует нашими тулами, подходы были единообразны и интуитивно понятны, чтобы была единая авторизация и экосистема. Я работаю с инструментом Catool, который позволяет настраивать продукты, содержащие валюты, имущество и другой продаваемый контент, а потом выкладывать их на витрины для показа пользователям. Catool позволяет управлять этими сущностями, менять настройки, следить за изменениями, сравнивать их, и активировать на нужном окружении. За счет универсального подхода мы решаем проблему, когда разные игры имеют свои “уникальные” виды настроек, разные процессы работы с ними, и необходимость настраивать всё вручную для каждого окружения. Я всегда хотел начать разрабатывать свои игры, даже парочку небольших сделал. Я рассматривал игры только с точки зрения написания геймплея, пока мне не попалась вакансия Wargaming в департаменте Platform. Мне стало любопытно увидеть игру с другой стороны: окунуться в устройство настроек, видеть, с какими проблемами сталкиваются те, кто поддерживают игры и помогать их решать. Несмотря на то, что я работаю 7 месяцев, я успел столкнуться с разными задачами — от разработки самого обыкновенного API до работы с глоссарием для «Танков» и «Кораблей» до обработки изображений для всех игр. Перед тем, как прийти на этот проект, я подумал, что и как вообще настраивается в играх: образно говоря, можно создать API, чтобы, например, управлять характеристиками того же танка. Но чем дольше я думал о том, что и как можно настраивать, тем больше понимал, что обычным CRUD API тут не отделаешься. Я предполагал, что задачи будут связаны только с веб-интерфейсом, но сфер, на которые можно повлиять, оказалось много: CRUD API, обработка изображений, работа с асинхронкой, обработка большого количества данных и не только. На работу я устраивался в первую волну пандемии и онбординг был удалённым. Поначалу меня это смутило, так как команда распределена по различным городам/странам, подойти к кому-либо и что-либо спросить не представлялось возможным. В первые дни работы для меня очень важно знакомство и общение с командой проекта и понимание, что нужно изучать. Тут мне повезло: ребята писали сообщения с предложением устроить созвон, рассказать про проект, куда и к кому идти с вопросами. А то обычно бывало так: приходишь на проект, тебе скидывают документацию и говорят: «Ну, ты заходи, если что». Кроме того, очень помогает погружение в бизнес-цель той задачи, которую необходимо выполнить. Не всегда в описании задачи говорится об этом, скорее просто упоминается, что как и почему должно быть сделано, но как по мне, когда понимаешь для чего нужно что-либо сделать и кто этим будет пользоваться, то это намного больше помогает её понять и дополнительно мотивирует. Проект начал разрабатываться недавно, активно развивается, ещё нет устаревших частей. Команда подсказывает и помогает понять, как что устроено, где есть подводные камни и скрытые вещи. Эта же помощь касается и код-ревью, поэтому в плане онбординга и проекта сложностей у меня не возникло. Также мне подобрали задачи, которые позволяли постепенно начинать знакомиться с проектом. Если подытожить, то влиться в команду было просто: никто в помощи не отказывает и все борются за общее дело. Проект нелёгкий и помогает мне развиваться и в плане технологий, и в плане опыта. Мой руководитель даже построил для меня план, по которому я шёл и вливался в проект. Не было такого, чтобы я сидел без дела, ничего не понимал и ни у кого не мог спросить. Помимо этого, есть инструмент My Team, который Платформа специально разрабатывала под свои нужды. Он позволяет удобно вести список личных целей, трекать прогресс по ним, закрывать их. Инструмент простой в использовании и интуитивно понятный, это не задачи в Jira, но нужно место, где можно обмениваться статусами с руководителем. К тому же, я думаю, он удобен руководителям выше, которые также могут видеть, как развиваются их подчинённые, какие у них планы на будущее и прогресс. Первое удивление заключалось в том, что тестировщики понимают технический язык. Я могу спокойно сказать что-то касательно используемого фреймворка и мне не придется подбирать слова, чтобы объяснить, как что работает. То есть как будто с другими программистами созвонился, обсудили какие-то технические вещи, и мне в ответ: «Ага, круто, лови два бага». Бывало, я сталкивался с некоторыми тестировщиками, которым было безразлично, почему у тебя есть какие-то ограничения или что-то ещё, — должно работать так, и больше ничего не волнует. А тут ребята слушают, направляют и понимают — это радует. Во-вторых, меня удивила доскональность наших QA. Я с уверенностью могу сказать, что проверяется фича с очень разных сторон, и более того, насколько мне известно, ребята созваниваются между собой, разбираясь, как что должно работать, что исключает ситуацию, когда один человек — одно мнение. Кроме того, они участвуют в код-ревью и сразу могут на этом уровне задать какой-то вопрос касательно логики, чтобы уже начать проверять задачу; могут работать с БД, понимают архитектуру и поддерживают боевое окружение. Поэтому могу сказать, что ребята — красавцы. Инфраструктура Platform Tools проста. Проект не легаси и нет всех наворотов-накрутов, когда к старым вещам надо добавить новые, но старое не трогать, в результате чего большое количество сервисов между собой не пойми как связаны и ведут себя неоднозначно. Для сборки и настройки пайплайнов/билдов мы используем стандартные билды Jenkins. Архитектура Tools — набор микросервисов, каждый из которых использует свою архитектуру, но следует общим правилам общения между бэкендом и фронтендом. Есть прокси, через который идёт общение, авторизация, логирование. «Пощупать» конкретный инстанс можно через Cras — оркестратор запущенных сервисов, управлять им можно прямо из браузера. Его написали DevOps Wargaming, и он позволяет настроить автоматический скейлинг или развернуть новое приложение в пару кликов. Это интуитивно понятный инструмент, который, позволяет легко подключиться к инстансу и покодить прямо внутри, что облегчает понимание не столько бага, сколько того, почему система ведёт себя так в данный момент. Благодаря этому инструменту намного удобнее подключаться к инстансам: мне не нужно искать своё приложение в тысяче адресов, чтобы подключиться по SSH; я могу набрать имя, и выдаются все доступные мне окружения — я сразу могу выбрать нужное и в два клика зайти на него. Я не только «пишу код, чиню баги». Могу без проблем предложить какое-либо новое решение, улучшить существующее, высказать идею на будущее — это поощряется, обсуждается и принимается. У меня нет однотипных задач, монотонной работы: задачи постоянно меняются, и сферы, в которых они используются, также новые, поэтому скучать не приходится. Порой случаются и переделки самих задач, инциденты в продакшене, но всё построено таким образом, что с момента появление инцидента до назначения задачи на конкретного разработчика проходит мало времени, что позволяет чинить вещи намного быстрее. И еще один важный момент — самообучение. Мы стараемся, чтобы примерно 20% времени уходило на саморазвитие, а не только на постоянный кодинг, поэтому при эстимации задач это заранее учитывается. Кроме этого, в самой Платформе 20% рабочего времени тратится на закрытие технического долга, что позволяет не накапливать его, а держать всё актуальным и обновленным. В заключение хочу сказать, что я был удивлен, насколько наше направление свежее и интересное как своими задачами, так и технологиями. Нам предстоит реализовать еще очень много различных интеграций и идей. Мы все еще развиваемся и будем рады, если вас Platform Tools заинтересует так же сильно.