forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общее (http://forum.boolean.name/forumdisplay.php?f=139)
-   -   Agent-UK (http://forum.boolean.name/showthread.php?t=17337)

moka 05.10.2012 18:08

Agent-UK
 
Несколько недель работал день в день над проектом. Заесто двух месяцев, было всего 3 недели на весь код, с нуля, front-end и back-end, все скрипты, нарезезка дизайна, звук, анимации, система пользователей и API для доступа к данным для клиента, короче работы было не мало.

В общем это веб-сайт, который еле-еле, натягивая называют "игрой". По сути всё просто - 4 миссии, 4 задания в каждой. Нужно исходя из подсказки найти правильную локацию на карте. По прохождению, каждый игрок поподает в призовой фонд, где имеет шанс выйграть boundle призов (можно глянуть что именно), в кратце - для пары, отлично скататься в UK, покататься на астон мартине, побывать в основных достопремичательностях.
Проект расчитан на 4 недели! Затем будет закрыт.
На третей неделе будет секретная миссия до конца игры. По мне так самая прикольная часть в деталях реализации. Там нужно будет на большой картинке оставить свой маркер, всего будет только 2 маркера на игрока. Самый близкий маркер к нужному пикселю, выйграет ещё всякие призы.

Не сказал бы что горжусь проектом, т.к. не совсем то чем хотел бы сейчас заниматься, но успех есть, за первые 5 дней, 5000+ регистраций, до того как игра была открытой. Вот только сегодня запустили игру, и разослали "спам", 300 человек на сайте стабильно, прыгало до 600 чуток, но потом быстро спало (сразу после начала рассылок).
Пользователей за примерно пол часа зарегалось ещё 600, в общем прикольно так идёт.

Промоутит нас клиент: VisitBritain, также много блоггеров.
Aston Martin спонсирует в плане призов, и очень доволен как игра выглядит, хочет тоже запромоутить, ждём дальнейших его действий.
Также Facebook - можно легко логиниться facebook аккаунтом, также ждём когда подтвердят приложение на Facebook App Store.
А ещё нас будет промоутить Yahoo, когда закончят проверку (обычно 10 дней требуется), к понедельнику должны закончить. Ожидаем примерно удвоить траффик.

Позже выдам ещё статистику по поводу какие страны, эмайл против facebook регистрации, как люди активно отмечают "подписаться на рассылку", и т.п. данные. Будет интерестно думаю многим.

Работали над проектом, один дизайнер и я в роли программиста. Писал всё с нуля на PHP, MySQL, HTML5, CSS3, jQuery, GMapAPIv3, Youtube API, все скрипты кастомные (сам писал). Для локаций используем свой существующий проект, и тупо тянем от туда инфу используя временный API.

Поддерживаемые броузеры: Chrome, Firefox, IE8+ (никакого IE7), Safari, iOS, Android.
Opera, вроди проблемы с видео были, да и не тестил её вообще, т.к. статистически это менее пол процента посетителей, т.к. аудитория анлгоязычная.

Скрины:


В общем, кто что думает?

moka 06.10.2012 04:39

Ответ: Agent-UK
 
Ыг. Сегодня в 4 дня разослали письма, полетели пользователи, нагрузка начала зашкаливать. Когда на Amazon EC2 Medium Instance налетело сразу 800 человек, сервер не выдержал, CPU загрузился на 100% и сервер упал.
Проблема в общем заключается в том что кэшинг тут не реализуешь - почти все обращения к базе данных уникальные и постоянно обновляются. Нагрузка на запросы не огромная, а вот частота загрузок весьма высокая, следственно много логики на PHP.

Пришлось шустро вырубать Instance, отсоединять жёсткий, создавать новый Instance в этот раз огромный (c1.xlarge - это самый мощный по CPU сервер на амазоне), и присоединять к нему жёсткий, и уже с него всё дело сервить.
Но проблема по сути не решается, т.к. данный сервер выдержит около 10,000 пользователей одновременно, может немного больше. Но по прогнозам, в понедельник будет большая реклама в Азии и Америке, и там может ударить сразу намного больше пользователей, и что-бы такое пережить нужно быть готовым.
Следственно пришлось искать альтернативные пути, быстро искать проблемы с запросами в бд и проблемы логики (которая и так простая), многое оптимизировал, и перенёс всю базу данных на RDS сервис, который Amazon предоставляет. В общем круто теперь всё. Шустро пашет, никаких проблем.
Также подготовил Load Balancer и настроил сервер так, что можно будет запустить несколько серверов, и балансер сам направит пользователя на менее загруженный!

Вот такие делишки. В общем сегодня я про..бал свой HACK и JAM на который собирался три недели. Который хостит Science Museum..
Короче - много FUN'а!

.. who cares ..

jimon 06.10.2012 09:54

Ответ: Agent-UK
 
Вложений: 1
Цитата:

Сообщение от MoKa (Сообщение 239732)
Ыг. Сегодня в 4 дня разослали письма, полетели пользователи, нагрузка начала зашкаливать. Когда на Amazon EC2 Medium Instance налетело сразу 800 человек, сервер не выдержал, CPU загрузился на 100% и сервер упал.
Проблема в общем заключается в том что кэшинг тут не реализуешь - почти все обращения к базе данных уникальные и постоянно обновляются. Нагрузка на запросы не огромная, а вот частота загрузок весьма высокая, следственно много логики на PHP.

Пришлось шустро вырубать Instance, отсоединять жёсткий, создавать новый Instance в этот раз огромный (c1.xlarge - это самый мощный по CPU сервер на амазоне), и присоединять к нему жёсткий, и уже с него всё дело сервить.
Но проблема по сути не решается, т.к. данный сервер выдержит около 10,000 пользователей одновременно, может немного больше. Но по прогнозам, в понедельник будет большая реклама в Азии и Америке, и там может ударить сразу намного больше пользователей, и что-бы такое пережить нужно быть готовым.
Следственно пришлось искать альтернативные пути, быстро искать проблемы с запросами в бд и проблемы логики (которая и так простая), многое оптимизировал, и перенёс всю базу данных на RDS сервис, который Amazon предоставляет. В общем круто теперь всё. Шустро пашет, никаких проблем.
Также подготовил Load Balancer и настроил сервер так, что можно будет запустить несколько серверов, и балансер сам направит пользователя на менее загруженный!

Вот такие делишки. В общем сегодня я про..бал свой HACK и JAM на который собирался три недели. Который хостит Science Museum..
Короче - много FUN'а!

.. who cares ..

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 20 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Randomize 06.10.2012 12:39

Ответ: Agent-UK
 
HipHop PHP? Какой фреймворк? CakePHP или CodeIgniter?
И точно ли виноват PHP? Обычно сервер роняют UPDATE/INSERT запросы к MySQL

moka 06.10.2012 17:29

Ответ: Agent-UK
 
Randomize, по сути не совсем PHP виноват, а скорее сама суть выдержать Apache всю нагрузку т.к там по сути одна страница, но много AJAX запросов на сервер, где каждый запрос требует поднятия данных из PHP сессии и запроса пользователя из BD до того как какая либо логика будет проделана. Как только пользовательские данные валидные, и он может совершить запрашиваемое действие, идёт сама логика, которая до примитивизма простая.
Сам весь процесс, требует просто много моментов учитывать.
При это запросы в БД простые тоже. Частота записи - большая, т.к. обновляются данные в БД постоянно.

Приколько если это был бы какой нибудь node.js, и всё держали в RAM'е, паралельно записывая в БД, таких проблем вообще бы не было.

Никаких Framework'ов не использовалось вообще. Приложение по сути маленькое, всё должно было максимум заточено под конкретные задачи, следственно ни фреймворки ни cms не использовались.

Т.к. BD вынесена на RDS сервер, нагрузка уже отлично распределяется.

Данные о нагрузке - в пятницу было около 6 сессий рассылок почты, каждая примерно по 300,000 получателей, следственно и траффик взлетел охренительно быстро.
Потеряли мы конкретно траффика, примерно 4,000 посетителей..

В понедельник будет около 10 сессий рассылки, распределены по времени, и разным регионам, самая большая пачка: 120,000.
Следственно траффик будет распределён так, чтобы не свалить тысячи пользователей в один момент.

Это мой первый опыт работы с подобным проектом, и опыт на столько прогрессивный, что писец :D

Всего уже 14,000 зарегестрированных, из них 1,600 фэйсбук, другие мэйлом (вручную данные все вбивали). Из них 4,700 закончили игру.
Это за одни сутки доступности самой игры. Регистрация была за неделю ранее доступна, но не рекламировалась много, до начала запуска игры и рассылки почты, было 4,000 регистраций.
В общем рассчитываем утроить, если не ещё больше в понедельник. К понедельнику примерно на 30% поднять от того что есть, тупо на основе социальных share - т.к. twitter просто трещит постами, так же как и Facebook тоже отлично шариться.

Интерестно то что хоть и постов в Twitter в раз 5 больше чем на Facebook'е, но положительных пользователей больше по переходу с Facebook'а.

В следующий раз нужно ставить NewRelic на сервер, и мониторить bottleneck'и.

jimon, круто. Сколько примерно человек работает над архитектурой и разработкой? И какой тип приложения? Для mongo бд, запускаете EC2 инстансы, или используете DynamoDB?
Цены кстати да, многие жалуются, а по мне так, посмотреть сколько железа, и сложностей amazon решает, построить такую инфраструктуру и содержание datacentr'а было бы ну в раз 150 дороже.
У меня опыта работы с масштабируемыми системами ваще ноль, amazon - обожаю, но никогда толком с ним не работал много, по этому многое не так и просто даётся, при этом сроки просто писец, на этот проект, на всё про всё я был один тех. человек, как бы есть тех. директор, но он нихера не знает. И когда я заболел в среду, он на собрании на вопрос: "выдержат ли сервера", чётко с ухмелкой ответил "Даа!..", а я и не знал об этом, а когда опомнился что мол, бля, а какой траффик мы ждём, и никакого анализа не провёл, тут и наступил незамедлительно писец.
Некрасиво для клиента получилось, пиздец, он не доволен, это как потом жить с девушкой, которая в начале тебе изменила..

Randomize 06.10.2012 22:15

Ответ: Agent-UK
 
Тогда переложить механизм сессий на БД и MEMORY_TABLE.
Должно помочь. А, ну ещё nginx опционально.

jimon 06.10.2012 23:02

Ответ: Agent-UK
 

MoKa, сервер для нашей игры http://www.pocketgamer.co.uk/r/iPhon...re.asp?c=45373 , над предпродакшен стадией сервера работало 2-3 программиста около месяца : перебирали кучу серверов, изучали zeromq, патчили libevent (потом дропнули), ковыряли разные бд и тд, сейчас еще около недели окончательного r&d инфраструктуры амазона и где-то 1-2 недели на разработку софта и настройку кластера

для mongodb у нас отдельные инстансы будут

moka 11.10.2012 03:46

Ответ: Agent-UK
 
Ещё одну проблему встретили, это колличество трафика.
Т.к. есть на сайте пару тяжёлых картинок, а также аудио на 5мб где-то, и запросов не мало, то забивался I/O на сервере и выделенный сетевой поток не тянул объём данных.
Решили проблему используя S3 Bucket и CloudFront - CND (Content Delivery Network), что позволяет хостить файлы в хранилище (S3), и используя CloudFront он дублирует данные по разным дата-центрам, и затем когда клиент запрашивает файл, то получит он его от самого оптимального и доступного региона.
Конечно, дело это не бесплатное, но если нужно шустро доставить широкой аудитории немного весомых файлов, то это лучший вариант.

ЗЫ, сейчас уже 30,000 пользователей, 50% примерно закончили игру..


Часовой пояс GMT +4, время: 01:45.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot