Ruby on Rails ile Sidekiq: Arka Plan İşlemlerini Yönetme ve Asenkron Görevlerinizi Optimize Etme

Ahmet AYHAN
3 min readMay 9, 2024

Giriş: Ruby on Rails uygulamalarında asenkron görevleri yönetmek ve arka plan işlemlerini kolayca gerçekleştirmek için Sidekiq oldukça yaygın olarak kullanılan bir araçtır. Bu makalede, Sidekiq’in ne olduğunu, neden önemli olduğunu, Ruby on Rails ile nasıl kullanılması gerektiğini ve nasıl kurulması gerektiğini ele alacağız.

  1. Sidekiq Nedir ve Neden Kullanılır?
  • Sidekiq, Ruby ile yazılmış bir arka plan işlemleri kuyruğu yöneticisidir. Rails uygulamalarında asenkron işlemleri gerçekleştirmek için kullanılır. Sidekiq, Redis veritabanını kullanarak işleri kuyruğa alır ve ardından işleri arka planda çalıştırır. Bu, web uygulamasının performansını artırır ve kullanıcı deneyimini iyileştirir.

2. Sidekiq Kurulumu:

  • Sidekiq’i kurmak için öncelikle Redis’i yüklemeniz gerekir. macOS’ta Redis’i Homebrew kullanarak şu komutla kurabilirsiniz:
brew install redis
  • Ardından, Redis’i başlatmak için terminale şu komutu girin:
brew services start redis
  • Sidekiq’i Rails uygulamanıza entegre etmek için yukarıda belirtildiği gibi Gemfile’a Sidekiq’i ekleyin ve ardından terminale bundle install komutunu çalıştırın.

Sidekiq, arka planda çalışan işleri yönetmek için Redis veritabanını kullanır. Bu nedenle, Sidekiq’i kullanmadan önce Redis’i yüklemeniz ve yapılandırmanız gerekir. İşte Redis’in kurulumu ve yapılandırılması için adımlar:

3. Redis Kurulumu:

  • macOS’ta Redis’i Homebrew kullanarak yüklemek için aşağıdaki komutu terminale girin:
brew install redis
  • Linux veya diğer işletim sistemlerinde, Redis’in resmi web sitesinden indirme ve kurma talimatlarını takip edebilirsiniz.

4. Redis Başlatma:

  • macOS’ta Redis’i başlatmak için aşağıdaki komutu terminale girin:
brew services start redis
  • Linux veya diğer işletim sistemlerinde, Redis’i başlatmak için Redis’in nasıl başlatılacağına dair belgeleri takip edebilirsiniz.

5. Redis Yapılandırması:

  • Redis’in varsayılan yapılandırma ayarları genellikle çoğu senaryoda uygun olacaktır. Ancak, gerektiğinde redis.conf dosyasını düzenleyerek özel yapılandırmalar yapabilirsiniz.
  • Özellikle güvenlik nedenleriyle, Redis’in şifre ile korunmasını sağlamak için requirepass parametresini ayarlayabilirsiniz.
  • Redis yapılandırması hakkında daha fazla bilgi için Redis’in resmi belgelerine başvurabilirsiniz.

Redis’in kurulumu ve yapılandırılması, Sidekiq’in doğru şekilde çalışabilmesi için önemlidir. Redis, Sidekiq tarafından işlerin kuyruğa alınması ve işlerin durumunun izlenmesi gibi işlevler için kullanılır. Bu nedenle, Sidekiq’i kullanmaya başlamadan önce Redis’in doğru şekilde kurulduğundan ve yapılandırıldığından emin olmalısınız.

3. Ruby on Rails ile Sidekiq Kullanımı:

  • Rails uygulamasında Sidekiq’i kullanmak için öncelikle Gemfile dosyasına Sidekiq'i eklemeniz gerekir:
gem 'sidekiq'
  • Ardından, terminale giderek bundle install komutunu çalıştırarak Sidekiq'i yükleyin.
  • Sidekiq’i başlatmak için terminale şu komutu girin:
bundle exec sidekiq

4. Sidekiq Job’ları Nasıl Yazılır ve Kullanılır?

  • Sidekiq kullanarak işleri yürütmek için “job” veya “worker” denilen Ruby sınıfları oluşturulur. Bir job sınıfı, perform yöntemini içermelidir ve işin ne yapacağını tanımlar. Örneğin:
class MyWorker
include Sidekiq::Worker
def perform(some_arg)
# Some long-running task
end
end

Bir işi kuyruğa almak için, job sınıfını çağırarak ve gerekli argümanları ileterek perform methodu ileçalıştırabiliriz. Sidekiq’te kullanılan perform yöntemlerinin açıklamaları:

a) perform_async:

  • perform_async yöntemi, bir işi hemen kuyruğa almak için kullanılır. İş, kuyruğa alındıktan sonra en kısa sürede çalıştırılmak üzere işlendiğinde Sidekiq tarafından yürütülür.
MyWorker.perform_async('some_arg')

b) perform_in:

  • perform_in yöntemi, bir işin belirli bir süre sonra (saniye cinsinden) çalıştırılmasını sağlar. Bu yöntemle, işin ne zaman başlayacağı belirlenebilir.
MyWorker.perform_in(10.minutes, 'some_arg')

c) perform_at:

  • perform_at yöntemi, bir işin belirli bir tarihte ve saatte (zaman damgası olarak) çalıştırılmasını sağlar. Bu yöntemle, işin ne zaman başlayacağı tam olarak belirlenebilir.
MyWorker.perform_at(1.day.from_now, 'some_arg')

d) perform_later:

perform_later yöntemi, Rails'ın Active Job API'si tarafından sunulan bir yöntemdir ve Sidekiq ile uyumlu çalışır. Bu yöntem, işi kuyruğa almak ve ardından en uygun arka plan işleyicisi tarafından çalıştırılmasını sağlar.

MyWorker.perform_later('some_arg')
  • Bu perform yöntemleri, Sidekiq tarafından sunulan ve işlerin asenkron olarak çalıştırılmasını sağlayan farklı seçeneklerdir. İhtiyacınıza göre, işin ne zaman başlayacağını veya ne kadar süre sonra başlayacağını belirleyebilirsiniz. Bu yöntemler, işlerinizi daha esnek bir şekilde planlamanıza olanak tanır ve uygulamanızın gereksinimlerine uygun olarak işleri düzenlemenize yardımcı olur.

Ruby on Rails uygulamalarında Sidekiq kullanarak arka planda çalışan işleri yönetmek ve asenkron görevleri gerçekleştirmek oldukça kolaydır. Sidekiq, web uygulamasının performansını artırırken, kullanıcı deneyimini de iyileştirir.

Bu makalede, Sidekiq’in ne olduğunu, Ruby on Rails ile nasıl kullanılması gerektiğini ve nasıl kurulması gerektiğini ele aldık. Sidekiq’in asenkron görevlerinizi yönetmek için güçlü bir araç olduğunu keşfetmek için Rails uygulamanızda Sidekiq’i kullanmayı deneyin!

--

--