Почему мы выбираем Ruby для наших проектов

В отношении языка Ruby есть ряд предубеждений и мифов. Есть даже устоявшаяся фраза «Ruby мёртв», которую в разговоре об этом языке обязательно скажут те, кто понимает его лишь поверхностно.

Технический директор компании Evrone Александр Кириллов, выступая на Meta/сonf в Воронеже, объяснил, почему Ruby является современным и актуальным языком.

Запись доклада Актуальность Ruby в современных проектах

Мифы о Ruby

Некоторые технические особенности языка во время его становления привели к тому, что сформировалось два мифа:

  1. Ruby медленный.
  2. Проекты на Ruby сложно масштабировать.

На заре существования язык действительно имел проблемы с производительностью и уступал PHP и Python. Но последние версии практически исправили этот недостаток, а будущие обновления должны добавить и новые возможности вроде работы с параллельными потоками. Сейчас медленно работающее приложение на Ruby — не столько проблема языка, сколько вопрос правильного построения архитектуры приложения и уровня знаний разработчика.

Масштабируемость и параллельные потоки в  Ruby 

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

Юкихиро Мацумото и Давид Хейнемейер Ханссон были бы удивлены, услышав, что Ruby мертв, а они продолжают над ним работать. Удивятся и сотни наших клиентов, техническая часть бизнеса которых построена на Ruby и успешно выполняет свои задачи.

Александр Кириллов, технический директор Evrone

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

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

Что делает Ruby on Rails классным

Есть еще одно мнение: язык уже старый и покидает мир разработки. Но приверженцы такой позиции зачастую просто не обладают информацией, которая позволяет признать язык и фреймворк развивающейся и до сих пор актуальной технологией.

Модель MVC

Ruby on Rails одним из первых начал использовать схему разделения компонентов приложения Model-View-Controller (MVC), которая значительно ускоряет цикл разработки и позволяет оперативно исправлять ошибки, быстро реализовывать бизнес-требования в проекте и вносить в них изменения.

Фреймворк пропагандирует «соглашение поверх конфигурации». Это дает однообразность структуры и архитектурных принципов проектов, написанных с его использованием, что обеспечивает сохранение одинаковых подходов к разработке из проекта в проект.

Если в команде случится ротация или придут новые специалисты, единообразие подхода позволит им быстро влиться в проект, а бизнесу — сократить время и снизить стоимость подключения новых разработчиков.

Базы данных

Когда ведется работа с базой данных, например с Postgresql, Active Record (ORM, используемая Ruby on Rails) позволяет абстрагироваться от текущей БД на более высоких уровнях. Это дает возможность писать практически одинаковый код под любую поддерживаемую базу данных.

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

Шаблоны

Ruby on Rails также поддерживает шаблонизаторы для веб-разработки, ускоряющие создание шаблонов для фронтенда. Самостоятельно писать HTML-код без помощи автоматизированных генераторов сложно, долго и дорого, поэтому фреймворк работает со множеством шаблонизаторов:

  • ERB,
  • HAML,
  • SLIM,
  • Liquid.

Деплой и тестирование

Чем больше бизнес-логики в приложении, тем сложнее обновлять его до актуальной версии. В Ruby есть инструменты, дающие возможность провести обновление одной командой, описав на Ruby все стадии развертывания. Система автоматизации сделает все остальное.

Поддержка проектов, написанных на Ruby

Чтобы следить за качеством кода, в экосистеме языка есть инструменты, позволяющие покрыть тестами все области написания кода, начиная от юнит-тестирования и заканчивая интеграционным. С Ruby on Rails можно использовать следующие инструменты:

  • Minitest,
  • Rspec,
  • Capybara,
  • Cucumber.

Развитие Ruby on Rails

Каждый месяц и каждый год для Ruby и фреймворка Rails выходят новые обновления и исправления. Сейчас уже доступна шестая версия Ruby on Rails, в которой представлены:

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

Большая часть изменений и улучшений связана с теми требованиями, которые предъявляют к языку разработчики, решая те или иные задачи.

К примеру, для хранения пользовательских данных существует множество инструментов, созданных сообществом. Разработчики Ruby, понимая, что такие инструменты пользуются спросом, реализовали необходимые возможности на уровне языка.

Технология развивается и силами сообщества. По статистике GitHub, Rails имеет больше всего контрибьюторов, принимающих активное участие в улучшении проекта, среди фреймворков других языков.

Сравнение контрибьюторов фреймворков

Чем больше контрибьюторов, тем выше вероятность, что запрос на улучшение или на исправление ошибки будет реализован быстрее и это не придется делать внутри команды, тратя время разработки проекта.

Сравнение контрибьюторов фреймворков для Ruby

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

История Ruby

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

История развития языка Ruby

В 2003 году компания 37Signals выпустила систему управления проектов Basecamp. Она стала очень популярной в США и Европе, разработчики начали присматриваться, изучать, на каком стеке технологий она создана. При работе над Basecamp родился фреймворк Rails. В 2004 году 37Signals опубликовала этот фреймворк в открытом доступе.

Благодаря возможностям, которые дает фреймворк, язык начал набирать популярность. В 2006 году Ruby занял первое место в рейтинге языков Tiobe и пробыл на лидирующей позиции 2 года.

Язык начал применяться в крупных проектах. На нем были написаны сервисы Airbnb, GitHub, первая версия Twitter. Потом социальная сеть пошла другой дорогой, но часть инфраструктуры так и осталась на Ruby. Кроме Rails, появились другие фреймворки — Hanami и Sinatra.

0
48 комментариев
Написать комментарий...
Sergey Ivanov

Про руби говорят что он мертв в сравнении с другими языками. Вы просто взяли и описали тулкит и инфраструктуру языка, не ответив на вопрос который сами же и задали: нахрена и кому сдался руби? Чем он лучше питона и пхп? Все перечисленные инструменты есть и в других языках, представлены богаче и поддерживаются значительно бОльшим коммьюнити чем в руби.
От того что Мацумото и ДХХ продолжают над руби работу он популярнее не становится.

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
borodutch

Все, что угодно, лучше пхп.

Ответить
Развернуть ветку
Александр Платон

Все что угодно. Лучше пхп.

Ответить
Развернуть ветку
Вадим Чиняев

аргументируйте, но только с позиции выгоды для бизнеса

Ответить
Развернуть ветку
borodutch

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

Отсутствие строгих типов — это беда для документации. Чем длиннее код (со всякими =>), тем сложнее его поддерживать. Да, мелкие проекты на 1-2 людей проще писать без типов, документации и так, как привыкли (да хоть на 1С). Но проекты, в которых больше 1 программиста работают над одним и тем же кодом, PHP становится адом.

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

Арибедерчи ёпта.

Ответить
Развернуть ветку
Вадим Чиняев

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

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

складывается ощущение что IT из problem solverov превращается в стадо инфоциган, оргазмирующих на технологии и пытающихся впарить их реальному сектору, без какого либо анализа, просто потому что это ох-но, и вероятно в будущем лет через 100 возникнет тех долг.
Когда это делает молодежь, еще понятно, но когда здоровые дядьки и конторы спорят о том какой молоток красивей, вне контекста задач - выглядит инфантильно, по меньше мере.

И вам не хворать..

Ответить
Развернуть ветку
borodutch

Удачи с ассемблером, ведь споры о молотках это "инфантильно".

Ответить
Развернуть ветку
Kirill Usoltsev

Юкихиро Мацумото и сам знает, что язык мертв и дал свое благословение рассказывать об этой печальной ситуации Нику Сатереру. Вот здесь Ник об этом говорит.

https://habr.com/ru/company/railsclub/blog/336690/

А тут он разности Ruby в пух и прах.

https://youtu.be/x0JlOxdXA_g

Ответить
Развернуть ветку
Yury Gurzhiy

Знаете мы вот уже 10 лет проводим мероприятие RubyRussia.club (Railsclub), и в этом году планируется под 1000 тысячу участников. Что кстати будет скорее всего рекордом конференции )

Ответить
Развернуть ветку
Вадим Чиняев

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

Ответить
Развернуть ветку
Kirill Usoltsev

Любой не каждый первый знает, что Руби мертв и на конференцию не пойдет.

Ответить
Развернуть ветку
Вадим Чиняев

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

Субъективно, но мне кажется перспективней iOs пилить, если смотреть с позиции начинающего разработчика (если я правильно понял аудиторию статьи).

Ответить
Развернуть ветку
Evrone
Автор

О стоимости поддержки проектов как раз есть в видео доклада. И она не ужасает.

Ответить
Развернуть ветку
Vanya Serikov

Что мертво, умереть не может

Ответить
Развернуть ветку
К М

Это вы Королю Ночи скажите. В лицо

Ответить
Развернуть ветку
Vitaliy Disyuk

Мне кажется, это просто мода - хоронить руби.
Скажи "Руби мертв", и ты в тренде.

Ответить
Развернуть ветку
Mikhail Kashkin

Посмотрите статистику Google Trends, StackOverflow, на гитхабе создания новых репозиториев. Посмотрите статистику поиска на Udemy. Ruby потерял в популярности в 5 раз от пика своей популярности.

Ответить
Развернуть ветку
Yury Gurzhiy

Это мем ))

Ответить
Развернуть ветку
Kirill Usoltsev

К поддержанию и пропаганде образа “Ruby is dead” мы сами с большим удовольствием прилагаем усилия. Ник Сатерер, который немало сделал в Rails, с удовольствием наклеил себе на шею нашу татуировку-переводилку с черепом и надписью “Ruby is dead”. Серия таких татуировок и наклеек была выпущена для конференции RubyRussia.

Ответить
Развернуть ветку
Bulat Ziganshin

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

Ответить
Развернуть ветку
К М

Вроде по Rust зарплаты хорошие

Ответить
Развернуть ветку
Nikita Kriuchkov

Скучная и неинформативная статья, непонятно для кого рассчитана. Такая же, как и про Rust. Тема почему вы выбираете Ruby не раскрыта.

Никто не будет спорить, что Руби = Рельсы, а Рельсы = Руби. Но указать такие плюсы как MVC, ORM и систему шаблонизации - все равно, что их не указать. Это не уникальные возможности.

Неужели эту воду пишет технический специалист ? Я не верю.
——
" Базы данных...Это дает возможность писать практически одинаковый код под любую поддерживаемую базу данных..." - конечно, хорошая практика менять продовый RDBMS раз в месяц.

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

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

Например, если писал я. Я рассказал бы: почему, например, выбрал Golang, а не C++ или Rust. Создал бы таблицу плюсов и минусов, указал бы какие плюшки от выбора мы получили и с чем столкнулись. Рассказал бы про подводный камни, которые всплывают при больших нагрузках.

Людям интересно читать кейсы, а не пересказ википедии.

Ответить
Развернуть ветку
Kirill Usoltsev

Википедии очень мало картинок, в этой же статье картинки прикольные.

Ответить
Развернуть ветку
Konstantin T

В последние 3-4 месяца заметил нарастающий хайп вокруг руби. Полагаю, что связано с миграцией разработчиков в более сладкие места/области. Отсюда и повышенное внимание к руби и сотни вакансий, - что на moikrug, что на западе. Смотрел вакансии по удаленке.
Кстати о птичках: генераторы в рельсах действительно удобны:)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Maria Deltsova

Зачастую, с экономической точки зрения проще отрефакторить то, что уже есть, чем переделывать всё с нуля. И мы (Evrone) готовы влезть и в такое и решить головняк клиентов ;)

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Evrone
Автор

Для настоящих самураев ))

Ответить
Развернуть ветку
Влад Цыплухин

Поставили вашу статью в подсайт Разработка.

Ответить
Развернуть ветку
Margarita Koktisheva

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

Ответить
Развернуть ветку
Pasha Rumkin

Руби был одновременно и хипстерским языком, и драйвером веб-разработки, который остановил гегемонию PHP и показал широкому кругу разработчиков, что писать под веб можно на языках общего назначения и даже без страданий. Благодаря Ruby стали широко использоваться пакеты и репозитории, а веб-разработчики задумались о написании тестов. Так что про фигню – явный перебор. На мой взгляд, Руби – один из наиболее сбалансированных и выразительных языков из тех, что я пробовал. Просто очевидно, что всех победит веб-стек, поэтому вклад во все остальное – сомнительная трата времени, но не похоже, что вы об этом.

Ответить
Развернуть ветку
Margarita Koktisheva

Django появился в 2005 году.
РоР появился в.... 2005 году!
Не надо плз выставлять все так как будто РоР пришёл этакий на белом коне и всех спас. В нескольких известных мне конторах писали на джанге уже давным давно и просто поулыбались когда РоР вылез на пик популярности и такой "вот до меня у вас ничего не было, а теперь есть всё".
Лучше бы человеко-часы, потраченные на руби, потратили на тот же питон или с++.
По сути люди вбухали годы своей жизни в никуда

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Pasha Rumkin

Что Питон, что C++ – языки с ужасной инфраструктурой. И RoR обошел Django именно по этой причине, и потому что он был построен на Ruby, который сделан для людей. Помимо этого C++ в тот момент стагнировал и вкладывать в него время было очень рисково. Да, до возникновения RoR существовали все инструменты и концепции, но Ruby позволил сделать все это быстро, дешево и с использованием последних наработок и минимумом легаси-кода.

Все что подвело Ruby – это низкая скорость и высокие требования к ресурсам. И как только остальные языки обзавелись соответствующей инфраструктурой, конкурировать пришлось вновь, но тут у Ruby не оказалось козырей. А Python/Django на сервере так и не смог вытеснить Ruby за все эти годы.

Ответить
Развернуть ветку
Margarita Koktisheva

У вас опять много субъективных утверждений и ни одного факта. Кроме низкой скорости Руби :)

Ответить
Развернуть ветку
Pasha Rumkin

Для начала вы приведите факты вместо подмены логики и эмоциональных высказываний. Вы ведь не считаете тезисы подобные этому: "В нескольких известных мне конторах писали на джанге уже давным давно" фактами?

Ответить
Развернуть ветку
Margarita Koktisheva

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

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Anton Kozlov

Какая ужасная статья

имел проблемы с производительностью и уступал PHP и Python. Но последние версии практически исправили этот недостаток

И все еще уступает, PHP значительно, а Python немного
https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html
Если все так радужно - почему часто ruby дополняют elixir или go?

не столько проблема языка, сколько вопрос правильного построения архитектуры приложения и уровня знаний разработчика

Ну это можно сказать практически про любой язык, тем более с подобной областью применения, в основном io-bound

Основной плюс ruby(и рельс, конечно) - это множество подходов и инструментов, созданных в других языках под влиянием и по примеру ruby. При этом сам ruby остается языком одного фреймворка(рельс) и одного предназначения - тех самых MVC.

Ответить
Развернуть ветку
Valentin Dombrovsky

Вы уверены, что стоит продолжать поддерживать реноме Evrone как компании, которая пишет только на Рубях, в то время как вы стараетесь привлекать питонистов, спонсируя Moscow Pythin Conf и Pycon Russia? :)

Ответить
Развернуть ветку
Bulat Ziganshin

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

Ответить
Развернуть ветку
Konstantin T

кек, спасибо, Evgeny Boyko! Возможно, Вы сэкономили мне кучу времени!
промахнулся я...

Ответить
Развернуть ветку
Yury Gurzhiy

Почему считаете, что промахнулись?

Ответить
Развернуть ветку
Konstantin T

Имел в виду, что промахнулся комментарием (выше).

Ответить
Развернуть ветку
Victor Malov

Помянем...
Ну какой Ruby? Давно мёртвый язык, к сожалению. Будущего у него нет.
Хотя сам язык хороший вроде бы.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Kirill Pankin

В общем, как обычно — малочисленность сторонников компенсируется их пассионарностью.

Ответить
Развернуть ветку
William Gardner

Руби жил, жив и будет жить! Он тонкий, изящный и узконаправленный, в этом и есть его основное преимущество.

Ответить
Развернуть ветку
Андрей Селин

Используете ли вы Basic и почему?

Ответить
Развернуть ветку
45 комментариев
Раскрывать всегда