Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Спочатку користувалися одним, потім іншим, третім, але постійно нас щось не влаштовувало. І в якийсь момент, ми усвідомили, що жоден з цих ресурсів не може дати нам того, що потрібно. І тоді було вирішено зробити свій.

Назва навіть придумувати не стали, знайшли в засіках куплений заздалегідь домен kttc.ru і вирішили нехай так і буде.

Що ми хотіли від проекту?

Нам була потрібна інформація про те, як ми грали за останню ігрову сесію. З відображенням змінилися показників, їх зростання або падіння.

Вирішили що будемо показувати всі існуючі на той момент ігрові рейтинги і доповнювати їх у міру виходу нових.

Більше нам нічого не потрібно було, робимо проект для себе.

З дизайном теж не парилися, зробили все максимально просто, щоб не відволікатися на зайві деталі.

На головній була тільки одна фраза "Як тільки, так відразу."

Перший сервер, вже і не згадається, був найдешевший, який змогли знайти. Оскільки прогнозована відвідуваність була: 1-2 відвідувача на добу, навантаження зведені до мінімуму. В майбутнє не дивилися, робилося на "і так зійде".

Поставили за стандартом: apache, php, mysql і завели.

Як framework'а. вирішили теж довго не думати, взяли те, з чим працювали на той момент, а саме Zend Framework 1

Благо WG надавало API і всі потрібні нам дані були.

Що то ще, але вже і не згадаєш.

Минуло кілька місяців, ми користувалися і нас все влаштовувало, але з'явилося дике бажання, поділитися з іншими гравцями. Хотілося чужих думок, оцінок і т.д.

На офф. форумі гри, створили пост з інформацією про наш проект і почали чекати. У цьому ж розділі, вже були теми з іншими популярними на той момент ресурсами, і наша тема не користувалася популярністю. Але час все змінює, потихеньку, помаленьку, почали з'являтися перші відвідувачі, перші відгуки, перші посилання на нас, ну і звичайно негатив.

Що то, у кого то, не працював. Що то довго завантажувалося, що то працювало але не так.

І у вільний час, ми почали вносити виправлення і допрацьовувати проект.

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

І разом з цим, ми впиралися в потужності нашого сервера.

Сайт періодично відвалювався, то база зависне, через купи немає оптимізованих запитів, то апач образиться і піде в себе.

Через цих падінь і через те, що ми, природно, не думали тоді про цілісність даних, почалися проблеми: криво відображалася статистика у деяких гравців.

Почали шукати причину всіх бід і взяли кілька природних, найпростіших кроків по оптимізації. (Так саме так) ділянки коду пов'язані з транзакційних.

Кеш, звичайно кеш, як ми забули про нього. Раз два і готово.Базу трохи відпустило, апач трохи теж.

Так само, вирішили, для зменшення обсягу бд і для зменшення часу завантаження сторінки зі статистикою, прикрутити "скукожівалку" для стат проміжків.

Скукожівака брала застарілі ігрові сесії, об'єднувала їх в одну і перераховував ігрові рейтинги для вийшла, нової, сесії.

Прикрутили Google AdSense, авось копієчка перепаде.

Або трохи довше, нам вдавалося справлятися зі зростаючими навантаженнями, але хотілося більше потужностей, щоб можна було розвернутися. Пора було шукати новий сервер і переносити проект.

Вивчивши ціни на Російському ринку, ми зрозуміли, що точно не потягнемо, пішли дивитися за бугор, хто підказав або десь наткнулися на Hetzner, та відгуки були не дуже, жорсткі диски сипляться і подібне, але подивившись на ціни і на характеристики пропонованого заліза, взяли у них. І як показала практика - не дарма.

Взяли ми, на скільки пам'ятаю, 2 терабайта hdd в рейді, 16 гигов оперативної і найпростіший процесор.

Скільки він коштував вже не пам'ятаю, але нарахувань з AdSense впритул вистачало на нього.

Попросили хорошого товариша, який розбирається в налаштуванні серверів, поставити все що потрібно для нашого проекту. Поставили apache + nginx + mysql на ubuntu.

Розгорнули бекапи, перекинули dns і все запрацювало.

Радості не було меж, потужностей за очі, все крутиться, все крутиться.

Пів року на новому сервері.

Сайт став відвалюватися ....

Довго не могли зрозуміти в чому причина. тому залізо було хорошим, але після довгих танців з бубном, з'ясували, що було дуже поганою ідеєю, зберігати весь файловий кеш в 1 папці (отримав дехто потім по шиї):

  • Нормалізували типи даних в таблицях. Прибрали надмірність.
  • Переробили кешування, додали вкладеність. Частина кешу перенесли в memcache.
  • Переписали все меппери, майже все тепер на транзакціях, позбулися тонни зайвого коду.
  • Разом з цим, відмовилися від Apache і поставили заради експерименту nginx + php-fpm.

Сайт почав дихати на повні груди.

Стали додавати нові сервіси: онлайн по серверам; інформація про нові стат проміжках гравців в реальному часі; відгуки; та інше.

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

До кінця року, навалилося багато основної роботи, наш ентузіазм згас, критичних помилок не було, сайт працював, і сам себе оплачував, все влаштовувало.

Невеликий апгрейд сервера.

З збільшену кількість відвідувачів, стало не вистачати оперативної пам'яті, зрозуміло що діри, витоку і т.д.

Збільшили пам'ять до 32 гигов і все працювало добре.

Провели конкурс на новий логотип.

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Одним нашим хобі, ситий не будеш. Пішли в реал.

Зайшовши якось на сайт і завантаживши нову статистику, ми побачили, що сильно довго все це відбувається і що щось треба міняти.

  • Оттюнілі все службові процеси, які виконуються по крону.
  • Распараллеліть різні службові процеси. Тепер сторінка користувача завантажується одразу, а всі процеси пов'язані з актуалізацією даних відбувається в тлі
  • Більш-менш актуалізували шаблон сайту.
  • Перенесли частина функціоналу з php на js.
  • Оптимізували кеш.
  • Додали "скукожіваніе" стат проміжків по роках, місяцях, днях.
  • Переробили функціонал, який відповідає за перерахунок топ тисячі гравців / кланів.
  • Додали інтерфейс для мобільних пристроїв
  • Додали нових сервісів.

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Статистика, танки. Танки, статистика. Танки, танки, танки.

А не додати нам на кттс, ще якусь гру?

Дивимося, вибираємо, шукаємо API. І натикаємося на API від Valve.

Як же ми відразу не подумали про Counter-Strike: Global Offensive.

Колупаємося, пробуємо, тестуємо. Так вийде.

Через пару тижнів викотили тестову версію на закритий сервер, завантажили гравців, все працює, можна викочувати в маси.

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Через приблизно пів року, даний розділ так і не отримав особливої ​​популярності у гравців, може бути ще не дізналися про нього, може бути тому що користуються нашим сайтом тільки танкісти і гравці в CS не знають про нього.

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Користувачі почали просити додати на сайт, розділ присвячений грі World of Tanks Blitz.

Оскільки основна структура не відрізнялася від настільної версії, то змогли випустити збір статистики по бліцу вже через кілька днів.

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

Збір ігровий сесійного статистики, на прикладі сайту (історія створення)

За час існування сайту, а це вже 3 роки, дизайн сайту особливо не змінювався, та він влаштовує більшість наших користувачів, але чесно сказати, він застарів. Ну і робився він нами, тобто іноді як могли, іноді як хотілося, а часом і так зійде.

Для визначення деяких моментів, ми запустили голосування, в якому взяло участь близько 3000 користувачів. З якого багато цікавого винесли для себе. Головне, що користувачі не люблять значних змін.

Почали пошуки дизайнера. Зрозуміло справа, знайти розумного дизайнера, буде коштувати хороших грошей. А де їх взяти?

Виходячи з нашого доходу, ми вирішили що може виділяти по 10000р в місяць, поки не розрахуємося повністю за дизайн і почали шукати.

Виявилося, що навіть знайомі дизайнери, з якими багато років працюєш, не готові братися за такий проект або за таку оплату. Але через місяць, ми знайшли людину нам відповідного і в даний момент працюємо з ним над КТТС v3.

Основне що хочеться бачити в новому дизайні:

  • залишити мінімалізм але зробити інформативніше
  • причесати все що можна (це як мінімум відступи, кольору, шрифти)
  • на головній колонки замінити на квадрати і додати сірими гри які ми плануємо додати в майбутньому
  • що то зробити з меню, тому що в тому вигляді в якому воно є зараз, воно жахливо
  • і звичайно додати сучасності

Як впорається дизайнер з нашим сайтом, поки не знаємо, сподіваюся що добре. Я думаю це буде тема для наступного поста.