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.

9c55af85fdee9df09c5fa7dd3d1945b0?s=128

Tayfun Öziş ERİKAN

November 23, 2013
Tweet

Transcript

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

    Öziş ERİKAN, CTO# Lab2023 Bilişim Teknolojileri AŞ# tayfun.ozis.erikan@lab2023.com - @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 • tayfun.ozis.erikan@lab2023.com - @toziserikan • www.tayfunoziserikan.com
  3. İsteklerinizi hafifletin, aşırı yük oluşturacak işlemler yapmayın, kullanıcılara hızlı cevap

    veren uygulamalar geliştirin.
  4. Request :) Loading… :\ Timeout :(

  5. Komplex iş parçacıklarınızı arkaplanda yapmalı ve kullanıcınızı bekletmemelisiniz.

  6. Nasıl?

  7. defunkt/resque —> resque/resque 5,365 1,039

  8. “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.
  9. 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
  10. • 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
  11. OSX - Linux $ brew install redis $ apt-get install

    redis-server $ gem install resque Gemfile gem 'resque', :require => “resque/server" ! $ bundle install
  12. $ 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
  13. config/initializers lib/tasks config/routes

  14. None
  15. 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'
  16. None
  17. None
  18. None
  19. Resque eklentileri • resque-mailer • resque-scheduler • resque-retry • resque-lock

  20. resque-mailer Email gönderme işlemlerini arkaplanda yapmanızı sağlar

  21. resque-scheduler İş parçacıklarını belirlediğiniz gelecek bir zaman diliminde çalıştırmanızı sağlar.

  22. -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
  23. Teşekkürler Soru-cevap Tayfun Öziş ERİKAN, CTO# Lab2023 Bilişim Teknolojileri AŞ#

    tayfun.ozis.erikan@lab2023.com - @toziserikan