Хочу быть в курсе событий

Сообщество веб-разработчиков начало подготовку к РИТ++ 2014, оставьте свою заявку, если Вы хотите получать новости о проекте.

Восьмая профессиональная конференция веб-разработчиков РИТ++ — наша флагманская конференция, профессиональное мероприятие «от разработчиков для разработчиков», охватывающее весь спектр индустрии веб-разработки: от системного администрирования до управления проектами и особенностей работы с языками программирования в веб-приложениях, а также клиентское и серверное программирование, базы данных и системы хранения, тестирование и качество.

  • 60 докладов
  • 2 полных
    дня
  • 800 участников
  • 12 секций

Опыт работы с LuaJIT в нагруженных интернет-проектах

Александр Сергеевич Гладыш (LogicEditor WWW: http://logiceditor.com/ e-mail: info@logiceditor.com Основной продукт — тулкит для создания визуальных редакторов бизнес-логики. Также, компания выполняет на заказ разработку по следующим направлениям: высоконагрузочные веб-сервисы, бизнес-направленности, игровые; игры на HTML5; приложения для iOS (бизнес-направленности и игровые).)

Доклад принят в Программу конференции

Как и зачем писать нагруженные интернет-системы на языке программирования Lua? Плюсы и минусы, успехи, разочарования и мечты.

Во вводной части доклада слушателям будет поведано об основных достоинствах и недостатках языка, JIT-компилятора LuaJIT, существующих фреймворков для разработки серверных решений на Lua.

Большая часть доклада будет посвящена практическому опыту построения нагруженных интернет-систем в продакшене (до 160M хитов в день на машину класса Hetzner EX6 на синтетике, реально приходило 20M), рассказу об используемых технологиях, велосипедах, граблях, неудачных и удачных решениях.

В заключении доклада будет кратко описано видение перспективной архитектуры: “если бы мы делали это сейчас с нуля”. Также будет предложен список основных источников информации для дальнейшего самостоятельного изучения темы.

Расскажем и о том, где и почему могут быть использовать Lua и сопуствующие технологии из доклада в существующих продакшен-системах.
1. Заглавная страница. О докладчике. Краткий план доклада.

2. Почему Lua?
а) Исторически: мы вышли из игровой индустрии, где Lua правит миром.
b) Прагматически: Работает — быстро! Писать — удобно! Освоить — легко!
c) Недостатки. В первую очередь — где искать людей? Основные проблемы при переучивании на Lua, очень кратко. Идеосинкразии языка. Пишите на Lua как на Lua!

3. О Lua и LuaJIT
a) Очень кратко о языке Lua, его происхождении, особенностях и росте популярности в последние годы. Где используется язык? IDE и специализированные IDE. Мэйнстрим и самопальные диалекты, NIH-синдром и лёгкость доработки напильником. Цена и выгоды отхода от мэйнстрима. Lua 5.1 vs. Lua 5.2. Metalua.
b) LuaJIT 2.0: почти-мэйнстрим диалект Lua. JIT, FFI, производительность. Поддерживаемые платформы. Ограничения на 64-х битах. LuaJIT vs. Lua 5.2. Вкусности, планируемые для LuaJIT 2.1 и LuaJIT 3.
с) Встроенный vs. расширяемый язык (на самом деле и то и то)? Ситуация до LJ2 и после. Теперь можно больше не писать на C!
d) Раньше с кодом было туго, сейчас качественного готового кода на Lua много. LuaRocks.

4. “Почему не писать всё PHP?” Место для Lua / LuaJIT в вашем стэке? Как другие интернет-системы используют Lua? Как это делаем мы? С нами “всё ясно”, мы — хардкорщики из геймдева (на самом деле нет). Почему и где стоит начать применять технологии из этого доклада в существующих продакшен-системах?
a) Настраиваемая пользователем логика.
b) Отдельностоящие сервисы.
c) Код, который иначе был бы написан на C/C++/OCaml.
d) ...

5. О существующих решениях для реализации веб-сервисов на Lua. Популярные:
a) Kepler/WSAPI — дёшево и сердито.
b) Luvit — модная бяка, навязывает чуждую мэйнстримному Lua нодовскую экосистему.
c) openresty — перспективный продукт китайской инженерной мысли.

6. Наш нынешний стек.
a) Какие задачи мы решаем?
b) На каком железе мы живём?
c) Архитектура взаимодействия. XEN, Ubuntu (и её тюнинг), nginx (и его тюнинг), spawn-fcgi, multiwatch, LuaJIT 2, WSAPI, 0MQ, Redis (и его тюнинг). DNS-ы. Отдельностоящие сервисы. Почему так?
d) Какие луашные библиотеки мы используем и почему? Годные альтернативы нашим историческим opensource-велосипедам (и какие из велосипедов — лучше альтернатив).
e) Как сделано High Availability?
f) Как устроен деплоймент?
g) Как устроен мониторинг?
h) Какие показатели по производительности? По стабильности?
i) DSL для описания обработчиков запросов. Кодогенерация. Прочие рюшечки и сахар (бонус: DSL для описания SQL-данных с возможностью автогенерации продвинутого UI бэкофиса для этих данных).

7. Грабли
a) Какие были основные проблемы? Как их решали? Несколько общих советов по отладке и оптимизации производительности при работе с Lua. Отладка отладчиком и по логам, оптимизация GC, какие параметры нужно мониторить. Профайлинг кода на LJ2. Автотесты.
b) Какие проблемы не решены, и как с этим жить?
i. Long polling / comet.
ii. ...

8. Каким мы видим стек следующего поколения?
a) Ориентироваться на openresty, но не использовать его напрямую. Почему?
b) Новая архитектура.
i. Проще! Ещё проще!
ii. Отказ от LuaRocks.
iii. Полный переход на FFI.
iv. Отказ от FCGI и WSAPI. Переход на epoll и библиотеку парсинга HTTP.
v. Отказ от сервера конфигураций.
vi Улучшенная High Availability.
vii Неблокирующее API на корутинах, без коллбэков. Архитектура. Особенности реализации для основных сервисов (HTTP[S], Redis, MySQL/Postgres).
viii. Новый дизайн DSL.
ix. ...

9. Рекомендуемые источники информации о Lua, LuaJIT и сопутствующих технологиях.

10. Вопросы?

Генеральный интернет-партнёр

  • Mail.Ru Group

Серебряный спонсор

  • Вadoo

Серебряный спонсор

  • WarGaming

Серебряный спонсор

  • Webzilla

Серебряный спонсор

  • Microsoft

Серебряный спонсор

  • Coalla Agency

Технический партнёр

  • Филанко

HR-партнёр

  • SuperJob

HR-партнёр

  • HeadHunter

Организационный партнёр

  • http://raec.ru/

Информационная поддержка

  • SearchEngines.ru
  • REG.RU
  • 3DNews.ru
  • Internest
  • Интернет Хостинг Центр
  • Xakep.ru
  • CMS Magazine
  • CNews.ru
  • SpaceWeb
  • RUcenter
  • NetCat
  • GISMETEO / ГИСМЕТЕО
  • ООО «Юмисофт»
  • eScan
  • ExpoMap.ru
  • PeterHost
  • Joom
  • Cтудия веб-разработок Михаила Кечинова
  • Softline
  • LiveJournal
  • SQLInfo.ru
  • Element Group
  • bOombate
  • Бизнес-школа RMA
  • OpenQuality
  • Rusonyx
  • FL.ru
  • WebLancer
  • Prograbli
  • Valuehost
  • ImageCMS
  • RusBase
  • LiveBusiness
  • Манн, Иванов и Фербер
  • Свободная Пресса / Svobodnaya Pressa
  • PROFISPACE
  • Нетология
  • Альпина Паблишер
  • Plus / Плас
  • Агава
  • Хостинг-Центр
  • Макхост
  • Webnames.ru
  • PCWeek
  • Bugtraq.ru
  • Opennet
  • Moscow Business School
  • MTI
  • PR.Sape
  • TUT.BY / ТУТ.БАЙ
  • Системный администратор / System Administrator
  • ITMozg.ru
  • Retail and Loyalty
  • В-port
  • Setup.ru