Ответ 1
TL; DR: Мы собираемся выпустить производственное приложение на MagLev. Вероятно, вам стоит подождать.
Извиняюсь за длину; У меня много отключенных мыслей по этому поводу, которые я все еще пытаюсь подключить.
Моя команда собирается запустить первое приложение на MagLev. Это была ухабистая дорога, но мы довольно уверены, что в итоге это окажется правильным решением. Я говорю о нашем опыте на нескольких конференциях в этом году, и я рад поговорить об этом более подробно, но здесь (длинный) обзор.
Как вы уже знаете, у GemStone есть долгая и гордая история, поддерживающая компании в финансовой индустрии. В первую очередь мы являемся магазином Ruby, и мы разрабатываем финансовые приложения. Мы заботимся о наших данных, поэтому GemStone был для нас очевидным выбором. MagLev позволяет нам использовать существующие знания Ruby и большую часть нашего кода и хранить наши данные в GemStone. Это был (казалось бы) идеальный брак.
Мы решили начать с небольшого приложения, которое было новым для наших пользователей, и было бы самым простым и минимальным риском для перемещения. Мы выбрали наше приложение для представления счетов, которое связано с нашей платформой для размещения на нашем сайте. Возможность просто сохранять объекты, не беспокоясь о картировании или конверсиях, сделала процесс очень быстрым и приятным, и мы избежали многих проблем, связанных с ORM и постоянством в целом. Мы планируем продолжить перемещение остальных существующих приложений в MagLev.
Тем не менее, вы, вероятно, должны ждать, пока не будут выполнены все следующие условия:
-
Вы (или работаете) с экспертами Ruby, которые достаточно знакомы с языком и его реализациями, чтобы исследовать и исправить детали реализации, многие из которых написаны на Smalltalk.
-
Вы (или с) разработчиками, которые понимают нюансы работы в Smalltalk конкретно, но обычно используют среду с изображениями.
-
Вы можете хорошо ознакомиться с платформой, языком, механизмами развертывания и инструментами GemStone/S.
-
Вы готовы отказаться от всего и переписать свое приложение в Smalltalk, если вы нажмете кирпичную стену. (Я признаю это: надеюсь, что MagLev иногда упадет совсем близко, просто для того, чтобы оправдать.)
Есть несколько вещей, с которыми у нас возникают проблемы на постоянной основе. Потому что для нас все вышеизложенное верно, мы пошли вперед. Мы часто работаем над каждой из следующих "проблем". Иногда ежедневно.
-
Выходы почти невозможно прочитать самостоятельно, и когда вы сталкиваетесь со многими исключениями, вам нужно играть с отладчиком командной строки от GemStone Smalltalk. Здесь есть довольно кривая обучения.
-
Совместимость библиотеки Ruby... меньше, чем вы надеялись. В принципе, вы можете рассчитывать на большинство вещей, написанных на чистом Ruby, чтобы быть в порядке. В основном все, что использует C-расширения без ffi, отсутствует. Это удивительное количество вещей. Библиотеки, которые смехотворно перерабатывают мета-программирование, путают MagLev. Это много вещей в земле Rails.
-
Перезагрузка и миграция кода являются ручными. Когда вы изменяете определение класса сохраняемого объекта на диске, вам необходимо управлять загрузкой нового кода и переносом существующих сохраняемых экземпляров вручную.
Все, что было сказано, то, что помогло нам больше всего в том, что я дружу с большинством (всех?) парней, которые (и были) осведомлены о MagLev в GemStone. Они были фантастическими для нас. Студенты в HPI также стали бесценными исправлениями ошибок и помогли нам понять проблемы.
О моей команде, потому что команда, которая у меня есть, в основном делает это возможным. У нас четверо разработчиков. У каждого из нас есть более чем десятилетний опыт (я думаю, что мы все на самом деле старше 12-15 лет). Некоторые из нас (я, по крайней мере) имеют более десяти лет опыта Ruby. Мы имеем разный опыт работы с Smalltalk, хотя ни один из нас не отгрузил производственные приложения, которые зарабатывали на нем. Я активен в сообществах Ruby и Smalltalk (и я вроде как "переход" от первого к последнему).
Наш опыт был немного скалистым, но в основном приятным. Если бы я знал тогда то, что знаю сейчас, я бы сделал это снова. Я надеюсь, что наша работа над этим поможет другим сделать то же самое в будущем. Я вижу MagLev как ценный инструмент в будущем.