Можно ли создать производственное веб-приложение, используя MagLev для ruby?
Я фанат Rails и ruby в целом и могу заняться созданием корпоративных приложений для финансовых учреждений. Мне очень нравится идея Маглева, и интересно, стоит ли ее рассматривать. Я не нашел много информации относительно того, используется ли maglev в производстве в дикой природе, не говоря уже о целях высокой безопасности.
Кто-нибудь успешно развернул критически важные приложения с использованием 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 как ценный инструмент в будущем.