Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby/Rails için Resque ve Redis ile Kuyruk Yönetimi

Ruby/Rails için Resque ve Redis ile Kuyruk Yönetimi

Ruby on Rails ile geliştirdiğiniz projeleriniz için, yük gerektiren veya daha sonra hesaplanması gereken bazı işlemlerin kuyruğa alınarak daha sonra arkaplanda çalıştırılmasını sağlayan ve bu işleri isterseniz birden fazla iş parçacığına da dağıtabileceğiniz Resque adlı araç tanıtılacaktır. Aynı zamanda GitHub’da da kullanılmakta olan Resque, Redis veri tabanı ile birlikte kullanılmaktadır.

Tayfun (Öziş) Erikan

November 23, 2013
Tweet

More Decks by Tayfun (Öziş) Erikan

Other Decks in Programming

Transcript

  1. RESQUE Ruby On Rails İçin Resque İle Kuyruk Yönetimi Tayfun

    Öziş ERİKAN, CTO# Lab2023 Bilişim Teknolojileri AŞ# [email protected] - @toziserikan
  2. Ben kimim? • “Lab2023 - Bilişim Teknolojileri AŞ” kurucu ortağı

    & CTO • Web geliştirici • Ruby / Rails , ExtJS, Sencha Touch, Sass, Compass • Front-end & Graphic, UI, UX • Native & Web Tabanlı Mobil Geliştirici • [email protected] - @toziserikan • www.tayfunoziserikan.com
  3. “Rescue - Yardım, kurtarma gibi telaffuz edilir.” ! Arkaplanda iş

    parçacıkları yaratma ve bunları sıraya (kuyruk) alarak daha sonra sırası geldikçe işlenmesini sağlayan Redis ile çalışan bir kütüphanedir.
  4. Arkaplanda neler yapılabilir? • Email göndermek • Veri indexlerini düzenlemek

    yada oluşturmak • Resim dosyalarını boyutlandırmak veya işlemek • Modellerinizde kayıt sonrası bazı hesaplamalar yapmak • Ses / görüntü dönüştürme işlemleri • 3.parti web servisleri ile haberleşmek • İstatistik verilerini hesaplamak • PDF vb. dosyalar oluşturmak
  5. • Ruby temellidir • JSON key-value veri yapısı için Redis

    kullanır • Birden fazla kuyruk oluşturabilirsiniz • Kalıcı iş parçacıkları oluşturabilirsiniz • Kuyruk ve iş parçacıklarını önceliklendirebilirsiniz • Sırası gelen iş sınıfındaki ‘perform’ methodu çalıştırılır
  6. OSX - Linux $ brew install redis $ apt-get install

    redis-server $ gem install resque Gemfile gem 'resque', :require => “resque/server" ! $ bundle install
  7. $ redis-server $ rake resque:work QUEUE=* Development * yerine worker

    adını da yazabilirsiniz. * God, monit gibi eklentilerle workerlarınızın otomatik başlamasını sağlayın. * Capistrano için deploy sonrası worker’larınızı yeniden başlatacak tarifler (recipe) yazın Production
  8. Resque-web Arkaplandaki iş parçacıklarını sinatra temelli bir web arayüzünden izlemenizi

    sağlar // Console $ resque-web ! // Routes mount Resque::Server, :at => '/resque'
  9. -Twitter’dan alıntıdır. “@toziserikan performans acisindan sidekiq daha mantikli olmaz mi?

    ” Sidekiq What if 1 Sidekiq process could do the work of 20 Resque or DelayedJob processes? BONUS