Slide 1

Slide 1 text

RESQUE Ruby On Rails İçin Resque İle Kuyruk Yönetimi Tayfun Öziş ERİKAN, CTO# Lab2023 Bilişim Teknolojileri AŞ# [email protected] - @toziserikan

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

İsteklerinizi hafifletin, aşırı yük oluşturacak işlemler yapmayın, kullanıcılara hızlı cevap veren uygulamalar geliştirin.

Slide 4

Slide 4 text

Request :) Loading… :\ Timeout :(

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Nasıl?

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

“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.

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

• 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

Slide 11

Slide 11 text

OSX - Linux $ brew install redis $ apt-get install redis-server $ gem install resque Gemfile gem 'resque', :require => “resque/server" ! $ bundle install

Slide 12

Slide 12 text

$ 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

Slide 13

Slide 13 text

config/initializers lib/tasks config/routes

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

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'

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Resque eklentileri • resque-mailer • resque-scheduler • resque-retry • resque-lock

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

-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

Slide 23

Slide 23 text

Teşekkürler Soru-cevap Tayfun Öziş ERİKAN, CTO# Lab2023 Bilişim Teknolojileri AŞ# [email protected] - @toziserikan