IT-Portfolio

IT-PortfolioВести с полей: DEV {web}- конференция о высоконагруженной веб-разработке

13 октября на конференции DEV {web}, организованной компанией IT-Portfolio, успешные разработчики, системные архитекторы и руководители известных интернет-проектов поделились своим опытом с коллегами, рассказав о тонкостях веб-разработки высоконагруженных проектов. На ней были не только профессионалы из Санкт-Петербурга, но и других городов – Москвы, Самары, Екатеринбурга, Омска. А также стран – Украины и Белоруссии.

Среди выступающих, были представители таких компаний как Topface, WapStart, Cezurity и Фотострана. Все спикеры были открыты для вопросов и дискуссий, которые возникали в огромном количестве.


С презентациями и краткими комментариями к выступлениям можно ознакомиться ниже. А с фотографиями по ссылкам: ВКонтакте, Facebook.

 

 

Дмитрий Бородин, CTO Topface, рассказал, что «настоящий» highload нужен проектам с 2-4 серверами, а в крупных он на втором плане. Имея честное горизонтальное масштабирование можно относительно эффективно работать даже с лапшекодом и неоптимизированным SQL, используя дешевые сервера и провайдера.

Надо сказать, что, по мнению IT-Portfolio (в частности, Александра Красса) и некоторых спикеров, позиция несколько неоднозначная. Если у проекта есть деньги и пользователи, чтобы использовать 2-4 сервера, причем, хотя бы с относительной эффективностью, то он уже явно достаточно успешен, а значит можно выделить деньги на апгрейд старых и вообще развитие проекта. Так итеративно развивались многие успешные проекты. Ведь чтобы сразу думать о правильном горизонтальном масштабировании, нужно иметь огромный опыт, знания и иметь возможность потратить много дополнительных усилий. Однако, полностью пренебрегать им тоже не следует, если есть хоть малейшая возможность сразу сделать все более-менее правильно. Ведь переписать будет намного дороже.


В рамках доклада Дмитрий задал несколько «невозможных» задач по разработке крупных web 2.0 проектов. Некоторые из них были решены с помощью общих усилий зала и спикеров на панельной дискуссии чуть позже, а некоторые стали «домашним заданием» участникам. По словам Дмитрия, при правильном решении четырех поставленных задач можно закрыть 85% проблем веб-разработки высоконагруженных проектов:

  1. Понимание проблем атомарности и многопоточности ~ 25%
  2. Тщательное освоение какой-то no-sql базы (Memcache) ~ 25%
  3. Паттерны оперирования данными в sql и no-sql (честное горизонтальное масштабирование, шардинг и т.д.) ~ 25%
  4. Отложенное исполнение нагрузки ~ 10%




Дмитрий Смирнов, ведущий разработчик компании «Фотострана», поделился секретами успеха проекта  и рассказал как правильно использовать PHP, MySQL, демонов на С++, memcache и другие технологии в проекте с 30 млн. посещаемостью.

 

Например, у Фотостраны более 200 серверов, но они не особо задумываются о «честной» горизонтальной масштабируемости. Многие их потенциально узкие места могут держать нагрузки в 2-3 раза выше уже сейчас (посещаемость проекта более 1,5 млн. в день). Плюс можно установить более мощные сервера.

 

Коллеги из Фотостраны, когда видят сложности с производительностью, которые сложно решить с помощью сущестующих технологий, просто пишут свои решения, например, демонов на C++. Пример работы с одним из них есть в презентации.


Кроме того, у них свое собственное NoSQL-хранилище Lemon. Они не смогли эффективно настроить Redis и не стали мучиться. Пообщавшись с другими спикерами и участниками, можно сделать вывод, что практически никому не удается эффективно использовать Redis или MondoDB - слишком тонкая настройка нужна, а людей которые это умеют катастрофически мало. Для больших проектов проще написать свое с нуля, а для средних – вообще подобные решения не использовать.


Отдельно стоит отменить слова Дмитрия о том, что по при работе с PHP-кодом (130 серверов) только 30% занимают временные затраты на базы данных. Он отдельно отметил, что это, видимо, говорит о неэффективном использовании PHP. Отсюда можно сделать вывод, что в больших проектах не так уж много проблем с MySQL. У Фотостраны таких серверов всего 14, причем только 7 обрабатывают запросы пользователей, а остальные для надежности и обновлений.

 

Как реагирует компания Cezurity на случайные сбои и предсказывает неслучайные, поведал ведущий разработчик Александр Чистяков. Во время доклада было очень много обсуждений технологий, которые используют различные проекты. Автор поделился личной «болью» по настройке всего что только может пригодиться. В докладе было очень много полезных деталей, подробнее смотрите в презентации.

 

 

Филипп Дельгядо, CTO Goodwix, ex-teamlead Яндекс.Деньги, в своем выступлении рассказал о том, как правильно использовать Java в веб-проекте. Тема «Java в вебе, в поисках проблем…» была раскрыта очень подробно. Он показал различные сложности, которые встречаются, например, при PHP-разработке, но легко решаются в рамках стека технологий и специалистов из Java-мира.


В итоге, Филипп дал рецепт построения своего фреймворка на Java, рекомендовав использовать сторонние только при условии наличия отличного специалиста, который знает именно в нем все тонкости. Сам фреймворк получился крайне простой, производительный и использующий некоторые популярные технологии. Его может создать средний разработчик где-то за 2 недели.


Отдельно стоит отметить, что в рамках работы с этим фреймворком достаточно расширять штат только Java Junior Developers – более высококвалифицированные и дорогие специалисты практически не требуются. Плюс решается проблема с верстальщиками – им фактически ничего не нужно знать о Java-окружении, только немного JavaScript, а интеграция frontend и backend делается крайне просто. Это все очень сильно экономит деньги работодателя – ведь не нужно держать штат высокооплачиваемых специалистов с огромным опытом, которых и найти-то крайне сложно.

 

 

Евгений Коковихин, системный архитектор WapStart, рассказал, что важно знать и помнить при проектировании приложений, способных масштабироваться. Это был последний доклад, но, тем не менее, было много полезной информации о граблях, на которые запросто может наступить большой проект, что можно ожидать от memcache и как его можно использовать. Это переросло в небольшую и полезную дискуссию, к которой подключились другие спикеры и участники. Плюс Евгений остановился на очень полезном сервисе для мониторинга производительности, pinba, который несколько раз упоминали другие спикеры.

 

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

 

В середине конференции была организована панельная дискуссия, которую вел Александр Красс (генеральный директор IT-Portfolio), в ней участвовали все спикеры. Дискуссия была посвящена проблеме выбора технологий и архитектуры для высоконагруженных проектов и построена так, что вопрос от ведущего чередовался с вопросами из зала. После интенсивного обсуждения некоторые участники определили эффективную стратегию развития своих проектов, а другие разобрались с текущими сложностями.

 

Благодаря DEV {web} профессиональные веб-разработчики смогли обменяться опытом. Мероприятия, проводимые компанией IT-Portfolio, служат отличной возможностью познакомиться и пообщаться с высококвалифицированными профессионалами, а также получить необходимые знания для развития и создания своих проектов.  

 

Мы уже начинаем планировать следующее мероприятие.

Комментарии