Можно ли создать веб-приложение для производства с помощью MagLev для ruby?

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

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

Ответы

Ответ 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 как ценный инструмент в будущем.