А между тем замечательный язык 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:
Напрягает динамическая «типизация», но для электронных таблиц это, конечно, объективный плюс.
Да и для распределенных приложений тоже.
Как сумасшедший упертый фанат статической типизации поинтересуюсь, в чем плюс для электронных таблиц и в чем плюс для распределенных приложений?
Good news everyone!
Для электронных таблиц, видимо, в отсутствии схемы -- она добавляет изрядно проблем, когда ее хочется поменять.
Для распределенных приложений -- ведь компилятор все равно никак не может проверить типы данных, которые шлет приложение, находящееся на удаленном хосте. Т.е. проблемы с типами на этапе компиляции не ловятся.
Если это просто клиент-сервер, то еще ничего, но если каждый кусок приложения может исполняться на отдельном узле -- проще взять хороший динамический язык и избавиться заодно от синтаксического и архитектурного оверхеда который добавляет статическая типизация.
1. А чем erlang выигрывает по сравнению со Smalltalk?
По поводу web есть у нас есть seaside.
По поводу гибких БД --- DabbleDb
2. И кому в 21-ом веке нужна эта статическая типизация..? ;)
У ерланга упор на распределенность и масштабируемость, и у него больше killer apps %)
А DabbleDb это разве натуральная база данных? Не онлайн ексель?
Есть подозрение, что распределенность и масштабируемость у Smalltalk-а не меньше... по крайней мере, потенциально :)) Если серьезно, я вот что хочу понять: можно ли "то же самое" реализовать в терминах объектов, без введения новых языков?
BTW, а какие именно killer apps имеются ввиду?
DabbleDb это, наверное, не "натуральная БД". (Кстати, последнее время перестал четко понимать, что это такое.) Но и не "онлайновый эксел". Скорее среда, для построения приложений, "ориентированных на данные". Причем с упором на гибкость. Если не ошибаюсь, за деньги можно и локально. Я его упомянул к тому, что весьма наглядно демонстрирует возможности нормальной объектности в этой области. Может, сравнение и не очень удачное. Но, в общем-то подходит под определение "сервис по хранению данных". Ну, и, конечно, определение авторов: DabbleDb --- Online Database
В догонку... DabbleDb не использует никаких внешних БД. Транзакции и т.п. написаны разработчиками самостоятельно, т.к. (цитирую) "nothing else did what
we needed". Это говорит в пользу того, что DabbleDb --- это таки БД?
В качестве killer apps -- ну там эриксоновский мегасвич AXD301, yaws, ejabberd, SimpleDb вот теперь.
Распределенность и пр. конечно можно и с объектами-- вон в Scala, говорят, с этим все хорошо, см. также язык E.
Но эрланг он одновременно и динамический, и с "прозрачной" поддержкой распределенности, и редких для динамических языков фич в виде удобной работы с бинарными данными -- все это в сумме должно делать его удачным выбором для распределенных систем.
Насчет DabbleDb почитаю, но все-таки не нашел я, как можно получить оффлайн версию. По классу она ближе к CouchDb, кажется, а не к mnesia.
Распределенность и пр. конечно можно и с объектами-- вон в Scala, говорят, с этим все хорошо, см. также язык E.
Я-то не совсем об этом. А о том, что столько языков наплодили --- ужас. А зачем --- не ясно. Лучше бы брали простые, но мощные концепции и языки, построенные вокруг них, и реализовывали бы на них все, что нужно... В этом разрезе хотел узнать мнение спецов: в чем проблема реализовать все то же самое (например) на Smalltalk?
А, ну это вопрос философский.
Уже давно есть тенденция ухода от general-purpose языков к специализированным, и это часто оправдано, имхо.
chaetal, у smalltlka вызов методов синхронный - это раз. Вот если бы был реализован асинхронный вызов, как в Е например, можно было бы сказать. что... smalltalk превратился в erlang. Ибо по сути объекты были бы ерланговскими процессами.
Во-вторых, smalltalk императивный язык (объекты с изменяемым состоянием), а значит, автомат. параллелизм получить намного тяжелее.
Post a Comment