Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

Rails 8 공개:주요 기능 및 배포의 자유

Rails 8이 마침내 출시되었으며, 이는 매우 흥미로운 방식으로 상황을 뒤흔들고 있습니다. 이미 Rails 커뮤니티에서 활동하고 계시다면 "PaaS가 필요하지 않습니다."라는 태그라인을 들어보셨을 것입니다.

이는 특이한(놀랍지는 않은) 사명입니다. 이번 릴리스는 모든 기능을 갖춘 PaaS(Platform-as-a-Service) 없이도 Rails 앱을 더 쉽게 배포할 수 있도록 하는 데 중점을 두고 있습니다.

플랫폼은 개발자가 코드를 실행하는 기본 인프라를 관리하지 않고도 웹에서 앱을 얻을 수 있는 방법을 제공합니다. Heroku, Render, Fly 및 Railway와 같은 비즈니스는 모두 Rails 커뮤니티에서 인기 있는 선택이었습니다. 개발자는 개발자 경험 플랫폼이 제공하는 서비스를 위해 일부 추가 호스팅 비용을 기꺼이 교환하려는 경우가 많지만, 이번 Rails 릴리스에서는 그러한 거래의 유혹을 조금 덜려고 합니다.

이 기사에서는 이를 가능하게 한 새롭고 향상된 기능을 검토하겠습니다. Solid Cache, Solid Queue 및 Solid Cable과 같은 기능은 Rails 8의 새로운 기능이며 Redis와 같이 우리에게 필요했던 일부 종속성을 제거합니다. Kamal 2는 이제 배포의 기본값이며 또 다른 gem이 필요하지 않은 새로운 인증 생성기가 있습니다. 들어가 보겠습니다.

Rails 8에서는 무엇이 바뀌었나요?

Rails(특히 Rails 8)는 정말로 원합니다 플랫폼 비용을 지불할 필요 없이 애플리케이션을 프로덕션 환경으로 더 쉽게 제공할 수 있습니다. 이번 Rails 릴리스의 변경 사항 대부분은 PaaS 없이 Rails 애플리케이션을 직접 호스팅하는 데 필요한 작업을 줄이는 임무를 중심으로 이루어졌습니다!

Rails 8 공개:주요 기능 및 배포의 자유 각 주요 변경 사항을 자세히 살펴보겠습니다.

Redis-free 캐싱을 위한 솔리드 캐시

레일스는 ActiveSupport를 사용합니다. 이는 웹 앱의 성능을 높이는 데 매우 중요합니다. 역사적으로 사람들은 빠르고 안정적이기 때문에 캐싱을 위해 Redis에 의존해 왔습니다.

Solid Cache는 얼마 전 ActiveSupport용 Redis-free 캐시 스토어로 출시되었습니다. 이는 한동안 37signals 등에서 사용되어 왔으며 이제 Rails에서는 이를 기본 선택으로 승격하고 있습니다. 캐시 저장소로 RAM 대신 데이터베이스(기본적으로 SQLite)를 사용하기 때문에 평소보다 훨씬 더 많은 캐시를 캐시할 수 있다는 추가 보너스가 있습니다. 데이터베이스 공간은 RAM보다 저렴하므로 데이터베이스를 사용하여 캐싱 시스템을 지원하는 것은 RAM을 사용하는 것보다 느리지만 더 많은 항목을 더 오랫동안 캐시하는 기능으로 인해 일부 앱의 성능이 더욱 향상될 수 있습니다.

이러한 성능 절충은 일부 사용 사례에는 적합하지만 다른 사용 사례에는 이상적이지 않을 수 있으므로 다른 캐시 저장소 중 하나를 사용하는 것은 여전히 쉽습니다. 기본적으로 Redis 또는 Memcached의 필요성을 제거하면 Rails가 수행하는 "PaaS 필요 없음" 임무에 한 걸음 더 가까워질 수 있습니다.

Redis가 없는 백그라운드 작업을 위한 솔리드 큐

아마도 Rails가 ActiveJob를 사용한다는 것을 이미 알고 계실 것입니다. 라이브러리를 사용하면 백그라운드 작업을 더 쉽게 작성하고 실행할 수 있습니다. 캐싱과 마찬가지로 Rails를 사용하면 ActiveJob를 지원하는 백엔드를 선택할 수 있습니다. . 많은 사람들이 Sidekiq이나 Good Job을 좋아하지만 오늘날 대부분의 옵션에는 두 가지 문제가 있습니다:

  • 가져오고, 관리하고, 잠재적으로 비용을 지불해야 하는 또 다른 종속성입니다.
  • Redis와 같은 다른 서비스(호스팅, 관리 및 잠재적으로 비용을 지불해야 함)에 의존합니다.

Solid Queue는 Redis에 의존하지 않고 백그라운드 작업을 관리하여 이 두 가지 문제를 모두 해결하려고 합니다. Sidekiq이나 Redis에 의존하는 다른 대기열 공급자를 사용해 왔다면 Solid Queue는 복잡성을 줄이고 호스팅을 더 쉽게 만드는 대안입니다. Solid Cache와 마찬가지로 Solid Queue는 RAM 대신 애플리케이션의 데이터베이스를 사용하여 백그라운드 작업을 추적합니다. 이는 종속성을 줄이고 프로덕션 배포를 더 간단하게 만들기 위해 Rails가 기본적으로 제공하는 또 다른 기능입니다.

Redis-free 웹 소켓용 솔리드 케이블

Rails는 개발자가 실시간 기능을 위해 웹 소켓을 쉽게 사용할 수 있도록 Action Cable을 사용합니다. 역사적으로 이를 위해서는 Redis가 필요합니다. 아마도 이것이 어디로 가는지 추측할 수 있을 것입니다!

Rails 8은 'Solid' 테마를 유지하면서 또 다른 기본 데이터베이스 지원 어댑터를 제공합니다. 필요하지 않습니다 하지만 웹 소켓을 사용하려고 하고 Redis를 구성하고 유지 관리할 필요가 없다면 이는 훌륭한 자사 옵션입니다. Solid Cache 및 Solid Queue와 함께 Solid Cable을 사용하면 Redis에 대한 필요성을 없애고 데이터베이스에 의존함으로써 PaaS 없이 Rails 애플리케이션을 더욱 쉽게 출시할 수 있습니다.

더 쉬운 배포를 위한 Kamal 2

Rails 8의 다음 새로운 기능은 Solid 어댑터와 상당히 다릅니다. 그럼에도 불구하고 Kamal(특히 Kamal 2)을 사용하면 자체 하드웨어와 함께 애플리케이션을 제공하는 것이 더 간단해집니다. Docker를 사용하면 소프트웨어를 쉽게 모듈화할 수 있으므로 언어에 관계없이 Docker 컨테이너를 배송할 소프트웨어를 갖는 것이 합리적입니다.

제 생각에는 Kamal은 Rails 8의 나머지 부분과 결합하더라도 대부분의 플랫폼의 개발자 경험에 실제로 영향을 미칠 수는 없습니다. 그래도 훨씬 더 쉬워집니다 Rails를 사용하지 않더라도 소프트웨어를 자신의 웹 서버에 배포할 수 있습니다! PaaS를 완전히 대체할 수는 없지만 초기 설정이 완료되면 kamal deploy를 실행하세요. 직접 배포하는 것보다 크게 개선되었습니다.

인증 생성기(Deviise 없음!)

사용자가 있는 Rails 앱을 만드는 경우 , 아마도 인증이 필요할 것입니다. 지금까지 Rails는 프레임워크의 일부로 인증을 포함하지 않았습니다. 커뮤니티에는 Rails 개발자가 인증을 작성하는 데 도움이 되는 몇 가지 훌륭한 솔루션이 있으며 그 중 가장 인기 있는 솔루션은 Devise입니다.

Rails 8에는 인증 생성기가 함께 제공됩니다. . 이는 완전한 인증 시스템은 아니지만 중요한 부분(보안 등)을 제대로 확보하는 데 도움이 되기에는 충분합니다. 로그인 및 사용자 가입 흐름을 처리하기 위한 뷰를 작성하는 것은 개발자의 몫이지만 생성기는 세션, 비밀번호 인증 및 비밀번호 이메일까지 처리합니다. DHH는 인증자에서 뷰를 제외하는 선택이 Rails 앱이 모두 동일하게 보이는 것을 방지하기 위한 의도적인 선택인지에 대해 조금 이야기했습니다.

이러한 새로운 생성기를 추가한다고 해서 애플리케이션 출시가 직접적으로 단순화되는 것은 아니지만, Rails가 너무 오랫동안 누락되었던 웹 애플리케이션 구축 시 발생하는 일반적인 문제에 대한 자사 솔루션을 제공합니다.

자산 파이프라인을 위한 프로프샤프트

Rails 8의 가장 큰 변경 사항 중 하나는 기본 자산 파이프라인이 Sprockets에서 Propshaft로 이동한 것입니다. Rails는 원하거나 사용해야 하는 경우 여전히 Sprockets을 지원하지만 새로운 Rails 8 8 애플리케이션은 기본적으로 Propshaft를 사용합니다.

Propshaft는 아니라에 대해 매우 독선적입니다. 자산을 묶거나 축소합니다. Rails가 PaaS를 불필요하게 만들려고 노력하는 것처럼 복잡한 빌드 파이프라인도 불필요하게 만들려고 노력하고 있습니다. Rails 8의 다른 많은 새로운 기본값과 마찬가지로 이전 버전의 Rails에서 Propshaft를 사용할 수 있으며 여전히 Rails 8용 Sprockets을 사용할 수 있습니다!

SQLite 및 레일

SQLite는 정확하게 Rails의 일부는 아니지만, Rails는 이번 릴리스에서 SQLite에 더욱 기대를 걸고 있습니다. SQLite는 서버리스 데이터베이스 엔진으로 Postgres와 같은 엔진보다 간단합니다. Rails 애플리케이션이 SQLite를 사용하는 경우 웹 프로세스와 별도로 실행되는 데이터베이스 프로세스가 필요하지 않습니다. 물론 이는 Rails 8의 사명과 매우 일치하여 웹 애플리케이션 출시를 더 쉽게 만듭니다.

Rails 8은 SQLite에 대한 자체 지원을 제공하므로 기존 데이터베이스 요구 사항을 처리하고 새로운 데이터베이스 기반 Solid 어댑터를 지원할 만큼 강력합니다.

Rails 8의 모든 새로운 점은 플랫폼의 필요성을 줄이는 것입니다.

기존 Rails 앱을 Rails 8로 업그레이드하는 경우 업그레이드를 완료하기 위해 수행해야 할 작업이 많지 않습니다. 대부분 Active Record에서 몇 가지 항목만 제거되었습니다. , 이미 한동안 사용 중단 알림이 있었습니다. 물론 "Rails 8의 새로운 기능" 기본값을 모두 활용하여 애플리케이션 배포를 단순화할 수 있지만 이는 선택 사항입니다.

Rails 8의 가장 큰 변화는 새로운 Rails 앱에 대한 것입니다! 새로운 Rails 앱은 기본적으로 백그라운드 작업용 Solid Queue, 캐싱용 Solid Cache, 웹 소켓용 Solid Cable, 자산 파이프라인용 Propshaft, 배포용 Kamal 2로 설정됩니다.

Rails는 최근 복잡성을 줄이고 최신 웹 앱을 만들기 위한 모든 기능을 갖춘 프레임워크를 제공하는 임무를 수행해 왔습니다. Rails 8은 만들기를 뛰어넘습니다. 웹 앱 및 배송 기존 옵션과의 호환성을 유지하면서 웹 앱을 사용할 수 있습니다.

Rails 8 기본값을 모두 사용하거나 일부 사용하거나 전혀 사용하지 않고 개발자 경험을 선호한다면 플랫폼을 계속 사용할 수 있습니다. 하지만 이번 릴리스의 목표는 플랫폼을 건너뛰고 인프라에 대한 더 많은 소유권을 가질 수 있는 옵션을 제공하는 것입니다.

이 기사가 마음에 드셨다면 Honeybadger 뉴스레터에 가입하시면 받은 편지함에서 바로 더 많은 Ruby and Rails 뉴스와 튜토리얼을 보실 수 있습니다!