Friday, December 14, 2007

Erlang @ Amazon

А между тем замечательный язык erlang действительно напрашивается на то чтоб стать next big thing в веб-приложениях. Последнее время все больше и больше интересных новостей из этой области — особенно тут отличился Amazon.

Однако ж обо всем по порядку.

Последнее время Amazon становится одним из основных ньюсмейкеров со своими весьма инновационными сервисами по хостингу данных и приложений.

Первой ласточкой был EC2 — нечто, крайне напоминающее обычный VPS хостинг — амазон предоставляет вам в пользование виртуальные машины с операционной системой на выбор, однако деньги берет не помесячно, а за машино-часы и переданные гигабайты (от $0.10 до $0.80 за машино-час, плюс $0.10-$0.20 за переданный гигабайт).

При этом машины легко включать-выключать и добавлять новые, для этого есть отдельный API. Скорость передачи данных между ними в сети амазона вполне на уровне.

Таким образом за приемлемые деньги можно получить небольшой (или большой) кластер из виртуальных машин.

Народ сразу оживился — действительно, EC2 и распределенный erlang будто созданы друг для друга. Можно запускать сколько нужно нодов на нужном количестве инстансов EC2, при этом не заморачиваясь никакими оргвопросами связанными с покупкой и администрированием настоящих серверов.

Второе — это S3, сервис по хранению данных. Деньги амазон берет за количество запросов + гигабайты в месяц, без всяких фиксированных тарифных планов.

И теперь амазон объявляет о запуске еще одного сервиса под названием SimpleDb — и все встает на свои места.

Это база данных, однако больше всего она похожа на большой excel-евский spreadsheet:

  • данные организуются в таблицы (которые называются доменами), 
  • никаких сложных запросов, но работает, говорят крайне быстро -- чуть ли не реалтайм;
  • в одной ячейке можно хранить несколько значений (как список или кортеж)
  • никаких типов у хранимых данных нет
  • таблицы распределены по многим серверам

Если кто читал про ерланговскую родную базу данных mnesia, сразу увидит много знакомых фраз. Точнее, практически все эти фичи есть и у mnesia.

Вкупе с распределенным подходом в EC2 это начинает казаться не случайным совпадением — похоже, в амазоне появилась ячейка любителей ерланга.

И действительно, в блоге амазоновского разработчика находим подтверждение: SimpleDb построена на erlang!

Если SimpleDb будет популярна — а предпосылки для этого есть (это ж Amazon) — это будет самый убийственный пример применения erlang в боевых условиях.

Да и просто факт, что уже доступна отличная и недорогая платформа для хостинга эрланговских приложений — уже очень хорошая новость.

14 comments:

Anonymous said...

Напрягает динамическая «типизация», но для электронных таблиц это, конечно, объективный плюс.

lrrr said...

Да и для распределенных приложений тоже.

Vladimir Shabanov said...

Как сумасшедший упертый фанат статической типизации поинтересуюсь, в чем плюс для электронных таблиц и в чем плюс для распределенных приложений?

semka said...

Good news everyone!

semka said...
This comment has been removed by the author.
lrrr said...

Для электронных таблиц, видимо, в отсутствии схемы -- она добавляет изрядно проблем, когда ее хочется поменять.

Для распределенных приложений -- ведь компилятор все равно никак не может проверить типы данных, которые шлет приложение, находящееся на удаленном хосте. Т.е. проблемы с типами на этапе компиляции не ловятся.
Если это просто клиент-сервер, то еще ничего, но если каждый кусок приложения может исполняться на отдельном узле -- проще взять хороший динамический язык и избавиться заодно от синтаксического и архитектурного оверхеда который добавляет статическая типизация.

chaetal said...

1. А чем erlang выигрывает по сравнению со Smalltalk?

По поводу web есть у нас есть seaside.
По поводу гибких БД --- DabbleDb

2. И кому в 21-ом веке нужна эта статическая типизация..? ;)

lrrr said...

У ерланга упор на распределенность и масштабируемость, и у него больше killer apps %)

А DabbleDb это разве натуральная база данных? Не онлайн ексель?

chaetal said...

Есть подозрение, что распределенность и масштабируемость у Smalltalk-а не меньше... по крайней мере, потенциально :)) Если серьезно, я вот что хочу понять: можно ли "то же самое" реализовать в терминах объектов, без введения новых языков?

BTW, а какие именно killer apps имеются ввиду?

DabbleDb это, наверное, не "натуральная БД". (Кстати, последнее время перестал четко понимать, что это такое.) Но и не "онлайновый эксел". Скорее среда, для построения приложений, "ориентированных на данные". Причем с упором на гибкость. Если не ошибаюсь, за деньги можно и локально. Я его упомянул к тому, что весьма наглядно демонстрирует возможности нормальной объектности в этой области. Может, сравнение и не очень удачное. Но, в общем-то подходит под определение "сервис по хранению данных". Ну, и, конечно, определение авторов: DabbleDb --- Online Database

chaetal said...

В догонку... DabbleDb не использует никаких внешних БД. Транзакции и т.п. написаны разработчиками самостоятельно, т.к. (цитирую) "nothing else did what
we needed". Это говорит в пользу того, что DabbleDb --- это таки БД?

lrrr said...

В качестве killer apps -- ну там эриксоновский мегасвич AXD301, yaws, ejabberd, SimpleDb вот теперь.

Распределенность и пр. конечно можно и с объектами-- вон в Scala, говорят, с этим все хорошо, см. также язык E.

Но эрланг он одновременно и динамический, и с "прозрачной" поддержкой распределенности, и редких для динамических языков фич в виде удобной работы с бинарными данными -- все это в сумме должно делать его удачным выбором для распределенных систем.

Насчет DabbleDb почитаю, но все-таки не нашел я, как можно получить оффлайн версию. По классу она ближе к CouchDb, кажется, а не к mnesia.

chaetal said...

Распределенность и пр. конечно можно и с объектами-- вон в Scala, говорят, с этим все хорошо, см. также язык E.

Я-то не совсем об этом. А о том, что столько языков наплодили --- ужас. А зачем --- не ясно. Лучше бы брали простые, но мощные концепции и языки, построенные вокруг них, и реализовывали бы на них все, что нужно... В этом разрезе хотел узнать мнение спецов: в чем проблема реализовать все то же самое (например) на Smalltalk?

lrrr said...

А, ну это вопрос философский.

Уже давно есть тенденция ухода от general-purpose языков к специализированным, и это часто оправдано, имхо.

Anonymous said...

chaetal, у smalltlka вызов методов синхронный - это раз. Вот если бы был реализован асинхронный вызов, как в Е например, можно было бы сказать. что... smalltalk превратился в erlang. Ибо по сути объекты были бы ерланговскими процессами.
Во-вторых, smalltalk императивный язык (объекты с изменяемым состоянием), а значит, автомат. параллелизм получить намного тяжелее.