• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
“Чем хорош Erlang вообще и для веб-разработки в частности?”

 

“Чем хорош Erlang вообще и для веб-разработки в частности?”


on

  • 636 views

Юрий Жлоба (TvZavr.ru, Москва)
 ...

Юрий Жлоба (TvZavr.ru, Москва)

Доклад: “Чем хорош Erlang вообще и для веб-разработки в частности?”

О чем: Для какого именно веба хорош Erlang? Он не имеет ничего, сопоставимого с Ruby on Rails, тогда зачем его использовать в вебе? Вносим ясность. Примеры успешных веб-проектов на Erlang.

Statistics

Views

Total Views
636
Views on SlideShare
405
Embed Views
231

Actions

Likes
1
Downloads
2
Comments
0

5 Embeds 231

http://brug.by 210
http://imaguru.co 15
http://feedly.com 4
http://plus.url.google.com 1
http://smashingreader.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    “Чем хорош Erlang вообще и для веб-разработки в частности?”
 “Чем хорош Erlang вообще и для веб-разработки в частности?”
 Presentation Transcript

    • Чем хорош Erlang вообще и для веб-разработки в частности? Юра Жлоба aka yzh44yzh
    • Сегодня я расскажу: Что такое Erlang Архитектура веб-серверов Преимущества Erlang для веб Примеры использования: компании и продукты Место Erlang в вебе сейчас и в будущем
    • Клевая картинка Без чего не может обойтись никакая презентация. Да, картинка не в тему. Но это не важно. Жанр презентации обязывает, чтобы клевые картинки были. А вот что б картинки были в тему, к этому не обязывает :)
    • Кратенько про Erlang Многопоточность Распределенность Устойчивость к ошибкам Горячее обновление кода
    • Два слова об истории Середина 80х – начало 90х 90-е – середина 2000х Вторая половина 2000х разработка языка жизнь в узкой нише рост популярности
    • Многопоточность Легкие потоки Эффективные планировщики Изолированные области памяти Изолированные сборщики мусора Обмен сообщениями
    • Распределенность Решение высокого уровня Сетевая прозрачность Просто посылаем сообщение процессу в другой ноде так же, как и процессу в своей ноде
    • Устойчивость к ошибкам 3 уровня защиты: Изоляция потоков Супервайзеры Распределенность
    • Подробнее о процессах Что такое процесс? Процессы бывают разные...
    • Подробнее о процессах Мы начнем с такого процесса, который в unix-подобных ОС создается системным вызовом fork()
    • Подробнее о процессах Процесс имеет ресурсы: несколько областей в оперативной памяти, для хранения кода, данных и стека; область в оперативной памяти для хранения метаинформации о самом процессе (обработчики сигналов, файловые дескрипторы, информация для планировщика и т.д.)
    • Подробнее о процессах ОС имеет таблицу процессов, а там: PID, родительский PID, UID пользователя, GID группы, состояние (зомби, да :)
    • Подробнее о процессах Один такой процесс потребляет прилично памяти fork() работает относительно медленно переключение между процессами тож не супер быстое
    • Подробнее о процессах 700-800 процессов, вот что может дать нам ОС Это много или мало? Пойдем дальше и увидим.
    • Подробнее о процессах Ок, эти процессы тяжелые, а бывают ли легкие? Конечно Нити (threads) Легковесные процессы, работающие внутри процесса ОС, и разделяющие его ресурсы.
    • Подробнее о процессах С нитями дела обстоят получше, ОС может нам дать десятки тысяч нитей. Но...
    • Подробнее о процессах Не каждому ЯП они доступны
    • Подробнее о процессах Виртуальная машина Erlang Кроссплатформенные нити для большинства популярных ОС Доступные из ЯП куда более простого и удобного, чем C/C++
    • Подробнее о процессах Причем процессы Erlang еще легче, чем даже нити. И их можно создать на порядок больше: сотни тысяч.
    • Архитектура веб-серверов 1. Принятие запросов и роутинг 2. Бизнес-логика 3. Хранение данных
    • Архитектура веб-серверов 1. Nginx 2. Ruby On Rails 3. Memcached/PostreSQL
    • Архитектура веб-серверов 1. Х/з, как это работает. 2. Тут-то мы все большие спецы 3. Ну ж MongoDB от Redis отличаем, небось :)
    • Архитектура веб-серверов 1-й уровень нам не интересен. Он просто работает и все. И пофиг, что там происходит. Пока...
    • Архитектура веб-серверов Пока мы обслуживаем 500-800 запросов в секунду. Но случается такое, что нам нужно обслужить 1000 запросов в секунду. 5К, 10К, 100К И тогда 1й уровень становится очень важным.
    • Архитектура веб-серверов Ну так что там, на 1-м уровне?
    • Архитектура веб-серверов Если мы возьмем какой-нибудь не очень свежий веб-сервер: Старичок Apache
    • Архитектура веб-серверов Пул из 100 (допустим) процессов ОС. Процесс выделяется из пула для обслуживания запроса, вызвает бизнес-логику, возвращает клиенту ответ И возвращается в пул.
    • Архитектура веб-серверов Важно быстро обрабатывать запрос и возвращать процесс в пул. Если процессы будут заняты долго, а запросов будет много, то сервер не сможет их все обслужить.
    • Архитектура веб-серверов Важно быстро обрабатывать запрос и возвращать процесс в пул. Если процессы будут заняты долго, а запросов будет много, то сервер не сможет их все обслужить.
    • Архитектура веб-серверов Поэтому nginx использует нити и имеет большой пул и легко его наращивает при необходимости. И поэтому он так крут :)
    • Преимущества Erlang для веб Erlang хорош на всех 3х уровнях.
    • Преимущества Erlang для веб Он вполне конкурирует с nginx на 1-м уровне. Вполне удобен для написания бизнес-логики на 2-м уровне. Годится и для хранения данных. (это ежели в памяти, хранение на диске лучше все-таки доверить БД)
    • Преимущества Erlang для веб Есть еще и 4-й уровень. Это задачи, требующие длительного времени, и выполняющиеся отложено. Обрезка закачанных картинок, перекодировка видео, сбор и анализ логов и т.д.
    • Преимущества Erlang для веб Вы для выполнения таких задач используете что-нибудь типа RabbitMQ
    • Преимущества Erlang для веб На Erlang можно реализовать все 4 уровня вашей системы, на одной технологии, в одной кодовой базе.
    • Преимущества Erlang для веб На том же серверном железе вы обсужите больше клиентов, больше запросов.
    • Преимущества Erlang для веб На порядок, а то и на два порядка больше :) Я, не будучи Erlang-гуру, написал сервер, который обслуживает 5-8К запросов в секунду на одной машине. Код Erlang-гуру сможет обслужить и 50К, и 100К.
    • Преимущества Erlang для веб Но это мы говорим об одном сервере. А Erlang изначально предназначен для построения распределенных систем. Так что если речь идет о кластере, то в таком проекте для Erlang самое место.
    • Преимущества Erlang для веб Разрабатывать распределенные системы в принципе сложно. Сама предметная область таит в себе много проблем. Erlang делает эту разработку простой насколько это вообще возможно.
    • Недостатки Erlang Малое количество разработчиков (и компаний) Плохая работа со строками Поддержка unicode не супер Библиотеки третьих сторон не production ready
    • Примеры использования Поговорим о компаниях и продуктах. Учитывая аудиторию, первой компанией в этом списке будет...
    • Примеры использования 37signals
    • Примеры использования 37signals Campfire, групповой веб-чат для общения команды.
    • Примеры использования 37signals, Campfire Строк кода R/s Задержка Процессов ОС Расширяемость Ruby 127 250-350 20ms да C 397 1800 2-3ms 80 нет Mark Imbriaco, Erlang Factory London 2009 Campfire Loves Erlang Erlang 273 1800 2-3ms 1 да
    • Примеры использования heroku
    • Примеры использования heroku Облачная PAAS платформа
    • Примеры использования heroku Балансировщик нагрузки HTTP Routing Mesh Архитектурный клей Logplex система сбора логов
    • Примеры использования heroku Perl: Making easy things easy and hard things possible! Ruby: Making easy things trivial and hard things fun! Erlang: Making easy things possible and impossible things trivial!
    • Примеры использования heroku Blake Mizerany и Orion Henry на Erlang Factory London 2009: How the Cloud Got Its Groove Back Jacob Vorreuter на Erlang Factory London 2011: Utilizing Redis in distributed Erlang systems Geoff Cant на Erlang Factory SF Bay Area 2013 про Logplex: High Throughput Erlang
    • Примеры использования heroku Fred Hebert Автор книги Learn You Some Erlang for Great Good! на NYC Erlang Factory Lite 2013 Why Heroku (still) uses Erlang
    • Примеры использования GitHub
    • Примеры использования GitHub https://github.com/erlang/otp
    • Примеры использования GitHub Erlectricity GitHub pages
    • Примеры использования GitHub Tom Preston-Werner на Erlang Factory SF Bay Area 2009 Mixing Erlang and Ruby with Erlectricity Jesse Newland на Erlang Factory SF Bay Area 2012: Rewriting GitHub Pages with Riak Core, Riak KV, and Webmachine
    • Примеры использования Facebook Серверная часть чата Данные 2011 года: 1 миллиард сообщений в сутки 10 миллионов активных пользователей на пике 100 серверов
    • Примеры использования Amazone SimpleDB распределенная база данных часть Amazone Web Services
    • Примеры использования Yahoo! Yogish Baliga на Erlang Factory SF Bay Area 2010 Deploying Erlang into a Large Organization
    • Примеры использования DemonWare Malcolm Dowse Erlang and First-Person Shooters in online games Wooga Knut Nesheim Designing online games for scale with Erlang WhatsApp Rick Reed Scaling to Millions of Simultaneous Connections
    • Примеры использования Riak Распределенная Key-Value БД CouchDB Распределенная документ-ориентированная БД RabbitMQ Брокер сообщений, одна из реализаций AMPQ Ejabberd Jabber сервер
    • Место Эрланг в вебе сейчас и в будущем Cloud Platforms Messaging Games Databases
    • Место Эрланг в вебе сейчас и в будущем Веб-сокеты SPDY и HTTP 2.0 Интернет вещей
    • Вопросы? :)