Развертывание современных веб-приложений – со всеми условиями, необходимыми для того, чтобы быть быстрыми и безопасными, а также легко обновляемыми – стало настолько сложным, что многие разработчики не осмеливаются делать это без PaaS (платформы как услуги). Но это смешно. Никто не должен платить на порядки больше за базовые вычисления только для того, чтобы сделать развертывание удобным и удобным. Это задача для открытого исходного кода, и Rails 8 готов ее решить. Поэтому мы очень рады, что теперь мы готовы к финальной версии Rails 8.0 после успешного бета-релиза и нескольких кандидатов на выпуск!
Вот все основные новинки в коробке:
Введите Камаль 2 + Подруливающее устройство
Rails 8 поставляется с предустановленными Камаль 2 для развертывания вашего приложения где угодно. Будь то облачная виртуальная машина или ваше собственное оборудование. Камаль берет новый Linux-компьютер и превращает его в сервер приложений или аксессуаров с помощью всего лишь одной команды «kamal setup». Все, что ему нужно, — это IP-адреса набора серверов с вашим SSH-ключом, и вы будете готовы к работе менее чем за две минуты.
Камаль может сделать это так легко, потому что Rails уже поставляется с высокоэффективным и настроенным Докерфайл для превращения вашего приложения в готовый к использованию образ контейнера прямо из коробки. Все, что вам нужно, — это собственная учетная запись реестра контейнеров, например Docker Hub или GitHub, для хранения образов.
В Rails 8 этот Dockerfile был обновлен и теперь включает новый прокси-сервер под названием подруливающее устройствокоторый находится перед веб-сервером Puma и обеспечивает ускорение X-Sendfile, кэширование и сжатие ресурсов. Это означает, что нет необходимости устанавливать Nginx или любой другой веб-сервер впереди. Контейнер Rails по умолчанию готов немедленно принимать трафик из Интернета.
Kamal 2 также включает в себя прокси, на этот раз специальный модуль под названием Камаль Прокси чтобы заменить стандартную опцию Traefik, которая использовалась при запуске. Этот прокси-сервер обеспечивает сверхбыстрое развертывание с нулевым временем простоя, автоматические SSL-сертификаты с помощью Let’s Encrypt и поддержку нескольких приложений на одном сервере без какой-либо сложной настройки.
Вместе с пересмотренной стратегией обработки секретов (со встроенной интеграцией для 1password, Bitwarden и LastPass) и новой функцией псевдонимов, позволяющей получать такие команды, как «kamal console», для запуска удаленного сеанса консоли Rails, он предоставляет полный пакет для обработки не только развертывание, но и работа вашего приложения в производстве.
Kamal 2 возглавлял Донал МакБрин, а Kamal Proxy + Thruster создал Кевин МакКоннелл, оба из 37сигналов.
Значительное сокращение зависимостей
Частью облегчения развертывания Rails является сокращение количества вспомогательных сервисов, необходимых для запуска. Раньше Rails требовался либо MySQL, либо PostgreSQL, а также Redis, чтобы в полной мере использовать все его функции, такие как задания, кэширование и WebSockets. Теперь все это можно сделать с помощью SQLite благодаря трем новым адаптерам с поддержкой баз данных: Solid Cable, Solid Cache и Solid Queue.
Все эти адаптеры созданы на основе одной и той же предпосылки: диски стали достаточно быстрыми, и нам не нужна оперативная память для такого количества задач. Это позволяет нам воспользоваться преимуществами упрощения SSD и NVMe-накопителей, которые на порядки быстрее, чем старый добрый вращающийся ржавчина.
Твердый кабель
Твердый кабель заменяет необходимость использования Redis в качестве сервера pubsub для ретрансляции сообщений WebSocket из приложения клиентам, подключенным к различным процессам. Он использует быстрый опрос, но при этом работает почти так же быстро, как Redis, при запуске через тот же сервер на SQLite. За пределами достаточно быстро для большинства приложений. В качестве бонуса Solid Cable по умолчанию сохраняет сообщения, отправленные в базе данных, в течение дня, что может облегчить отладку сложных проблем с обновлением в режиме реального времени.
Solid Cable был создан Ником Пеццой из Работаю Не Работаю.
Твердый кэш
Твердый кэш заменяет необходимость использования Redis или Memcached для хранения кэшей фрагментов HTML, в частности. Помимо избавления от зависимости от дополнительных сервисов, он также позволяет использовать гораздо больший и дешевый кеш благодаря использованию дискового хранилища, а не оперативной памяти. Это означает, что ваш кеш может жить дольше и охватывать еще больше запросов, выходящих за пределы 95-го или 99-го процентиля. Кроме того, этот кеш может быть зашифрован. и управляется явным лимитом хранения (например, 30 или 60 дней). Упрощение соответствия современным политикам конфиденциальности и ожиданиям.
Solid Cache работает в Basecamp уже более года и хранит 10 терабайт данных, обеспечивает полный 60-дневный период хранения и вдвое сокращает время рендеринга P95 после его внедрения.
Solid Cache был создан Доналом Макбрином из 37signals.
Сплошная очередь
Сплошная очередь заменяет для большинства людей необходимость не только в Redis, но и в отдельной среде выполнения заданий, такой как Resque, Delayed Job или Sidekiq. Для высокопроизводительных установок он построен на новой FOR UPDATE SKIP LOCKED механизм, впервые представленный в PostgreSQL 9.5, но теперь также доступный в MySQL 8.0 и более поздних версиях. Для более скромных потребностей он также работает с SQLite, что делает его идеальным для пути без зависимости к первому приему дофамина HELLO WORLD, который вы получаете, сразу же увидев свою работу в производстве.
Solid Queue может работать либо как плагин puma, который используется по умолчанию при установке на один сервер, либо с помощью нового плагина. bin/jobs команда для запуска выделенного диспетчера. Можно запустить несколько диспетчеров, работающих с выделенными очередями в соответствии с индивидуальной настройкой производительности, и все это с гибкой схемой конфигурации, которая не требует никаких настроек «из коробки», но дает вам все возможности, когда вам это нужно.
Он обладает практически всеми функциями, которые вы можете пожелать от современной системы очереди вакансий. Включая надежные средства управления параллелизмом, повторные попытки и оповещения об ошибках, планирование повторяющихся заданий и многое другое. В HEY он заменил не менее 6(!) разных гем Resque, как одно интегрированное решение.
Solid Queue тщательно разрабатывался в условиях реальной производственной среды в течение последних 18 месяцев, и сегодня он выполняет 20 миллионов заданий в день только для HEY в 37signals.
Solid Queue была создана Розой Гутьеррес из 37signals.
Подготовка SQLite к производству
Помимо тройного адаптера Solid, который позволяет SQLite использовать Action Cable, Rails.cache и Active Job, была проделана большая работа по созданию адаптера SQLite и драйвера Ruby, пригодных для реального использования в Rails 8.
В 37signals мы создаем растущий набор приложений, которые используют SQLite в производстве с ОДИН РАЗ. Сейчас существуют тысячи установок обоих Костер и тетрадь в дикой природе все работают под управлением SQLite. Это означало большое реальное давление на то, чтобы Rails (и Ruby) работали с этой замечательной файловой базой данных настолько хорошо, насколько это возможно. Через правильные настройки по умолчанию, такие как WAL и режим IMMEDIATE. Особая благодарность Стивену Маргхайму за куча таких улучшений и Майк Далессио за решение проблемы с повреждением файла SQLite в последнюю минуту в драйвере Ruby.
Замена звездочек с карданным валом
Но Rails 8 — это не только лучшая история развертывания и адаптеры на основе базы данных. Мы также делаем Propshaft новым конвейером активов по умолчанию. Propshaft — это результат миссии по использованию #NOBUILD в качестве пути по умолчанию в Rails 7 (и выгрузки более сложных настроек JavaScript в Bun/esbuild/vite/etc). Как новый конвейер активов она заменяет старую систему Sprockets, которая возникла еще в 2009 году. Это было время, когда еще не существовало транспиляторов JavaScript и конвейеров сборки, какими мы их знаем сегодня. И задолго, задолго до того, как мы смогли представить себе браузеры с великолепной реализацией JavaScript, импортом карт и отсутствием ограничений для множества небольших файлов благодаря HTTP/2.
Это отличный пример необходимости время от времени брать новый лист бумаги и снова рассматривать знакомую проблему с первых принципов. И оказывается, в нашем новом мире #NOBUILDконвейеру активов нужно сделать только две основные вещи: предоставить путь загрузки для активов и пометить их дайджестами, чтобы обеспечить истечение срока действия в далеком будущем. Вот и все. Помимо этого, Sprockets сделала миллион других вещей, многие из которых уже давно вышли из моды и находились в плохом состоянии, и лишь немногие участники хотели или могли помочь это исправить.
Итак, мы благодарим Sprockets за 15 лет службы, но будущее конвейера активов в Rails называется Propshaft. И теперь это значение по умолчанию для всех приложений Rails 8, хотя мы продолжим поддерживать Sprockets для существующих приложений.
Propshaft был создан Дэвидом Хайнемайером Ханссоном из 37signals и Брено Газзолой из ФестаЛаб.
Создание основ аутентификации
Наконец, упрощение перехода к производству также означает, что мы должны упростить обеспечение безопасности. Rails уже долгое время собирает высокоуровневые абстракции для ключевых компонентов превосходной системы аутентификации, чтобы сделать ее проще. У нас было has_secure_password начиная с Rails 5, но также недавно представленный generates_token_for :password_reset вместе с authenticate_by в Рельсах 7.1. Теперь, с помощью Rails 8, мы объединяем все части в полноценный генератор системы аутентификации, который создает отличную отправную точку для системы аутентификации на основе сеанса, с возможностью сброса пароля и отслеживанием метаданных.
Просто беги bin/rails generate authentication и вы получите базовые модели для Session и Userвместе с PasswordsMailer, SessionsControllerи Authentication беспокойство. Все, что вам нужно, — это пройти процедуру регистрации пользователя (поскольку она обычно индивидуальна для каждого приложения). Не нужно бояться разворачивать собственную настройку аутентификации с помощью этих базовых функций (или, не дай бог, платить за это поставщику!).
И все остальное
Rails 8 выйдет всего через несколько месяцев после Рельсы 7.2но помимо всех этих невероятных новых инструментов, представленных выше, также включает в себя множество исправлений и улучшений. Никогда еще Rails не работал на полную мощность так сильно, как то, что мы делаем сейчас. Это невероятное время для участия в работе над фреймворком и отличный момент, чтобы впервые сесть в наш поезд. Любите ли вы #NOBUILD или #NOPAAS или вас просто привлекает миссия по сжатию сложности в целом, вы будете как дома в сообществе страстных разработчиков, которые ценят красивый код так же, как и производительность.
2024-11-12 13:51:00
1731924848
#Ruby #Rails #Rails #PaaS #не #требуется

