39. CLOUD DEFINITION
Cloud computing is a model for enabling ubiquitous,
convenient, on-demand network access to a shared pool of
configurable computing resources.
40. CLOUD DEFINITION
It can be rapidly provisioned and released with minimal
management effort or service provider interaction.
50. SUBSCRIPTION MANAGEMENT
import Red Hat subscriptions from Portal
create your own products and subscriptions
register machines and consume them
see some statistics and graphs
51. CONTENT MANAGEMENT
sync RPM content from CDN
sync RPM content from other repositories
sync puppet content from Puppet Forge
separate content into environments and content views
promote content
consume content using yum or puppet
remote install/upgrade content
54. CONFIGURATION MANAGEMENT
import Puppet classes into Foreman database
assign classes to hosts (existing or provisioned)
assign parameters to classes
collect info from Facter and Puppet
create statistics and graphs
60. JRUBY
Ruby 1.8/1.9 on JVM
mature and stable project
JIT and AOT
bidirectional
is in Fedora
61. TORQUEBOX
application platform for Ruby on Rails, Sinatra...
runs atop of JBoss AS
offers services like messaging, scheduling, caching
allows use of clustering, load-ballancing and HA
uses standards where possible
73. FORKING SERVERS IN MRI RUBY
threads are not the only options for web concurency
process forking can do the thing too
Linux is good in forking
unfortunately MRI Ruby can't leverage COW memory
74. FORKING SERVERS IN MRI RUBY
Ruby Enterprise Edition solves this for 1.8
Ruby 1.9 has many REE optimalizations (but not COW)
Ruby 2.0 will finally deliver COW-friendly forking
(bitmaps)
76. DEPLOYMENT OPTIONS WITH RUBY
The Ruby community has always insisted that performance
is not an issue while constantly searching for higher
performance web servers and application stacks. -- Greg
Weber
82. DEPLOYMENT OPTIONS WITH RUBY
to unleash power of evented processing, you need to rewrite
your application (fibers, goliath, node.js, vert.x, async
sinatra)
84. SO WHEN TO CONSIDER JRUBY?
you have an app that is not build around evented pattern
your app takes decent amount of memory
your app also contains lots of I/O operations (SQL,
messaging, REST calls)
you want to scale up
85. WARNING
I did not cover Rubinius or REE which partially solves some
of these issues
86. BY THE WAY
the following languages have concurrency built in the
runtime
erlang
haskell
google go
94. KATELLO START IN DEV
$tm bnl ee rk evrnet
ie ude xc ae niomn
ra 01.7s
el m986
ue 01.4s
sr m824
ss0074
y m.6s
95. KATELLO START IN PROD
$tm rk evrnet
ie ae niomn
ra 01.2s
el m332
ue 0999
sr m.7s
ss0287
y m.1s
96. RUBYGEMS ARE SLOW
multiple directories approach
ruby needs to walk the tree
many stat/open calls with ENOENT
bundler adds more dirs
rvm/rbenv adds even more dirs
97. HOW RUBY HANDLES REQUIRE
#src rk evrnet2& |ge EON
tae ae niomn >1 rp NET
..
.
oe(xla_lf-../i/igeo.b,OROL)=- EON
pn"/dpfuf013lbsnltnr" _DNY 1 NET
oe(xntla-../i/igeo.b,OROL)=- EON
pn"/e-dp031lbsnltnr" _DNY 1 NET
oe(xjhnr-../i/igeo.b,OROL)=- EON
pn"/sitb021lbsnltnr" _DNY 1 NET
oe(xj-ots062lbsnltnr" OROL)=- EON
pn"/srue-../i/igeo.b, _DNY 1 NET
oe(xjmi-../i/igeo.b,OROL)=- EON
pn"/amt065lbsnltnr" _DNY 1 NET
oe(xyicmrso-../i/igeo.b,OROL)=- EON
pn"/u-opesr096lbsnltnr" _DNY 1 NET
oe(xi8_aa033lbsnltnr" OROL)=- EON
pn"/1ndt-../i/igeo.b, _DNY 1 NET
..
.
112. ACTIVERECORD
i dfnd JUYVRIN
f eie? RB_ESO
gm'cieeodjb-dpe'
e atvrcr-dcaatr
gm'dcpsge'
e jb-otrs,
gm'cieeodjbpsgeq-dpe'
e atvrcr-dcotrslaatr,
es
le
gm'g
e p'
ed
n
120. WHY SYSTEMTAP IS USEFUL
very low-level
supports high-level (JVM, Python, Ruby)
121. WHY SYSTEMTAP IS USEFUL
part of RHEL and Fedora
kernels are systemtap ready
Ruby extension part of RHEL 6.2 (RHSA-2011-1581)
122. WHY SYSTEMTAP IS USEFUL
project documentation and wiki
RHEL6 SystemTap Beginners Guide
123. INSTALL SYSTEMTAP
#ym- isal
u y ntl
ssetp
ytma
ssetprnie
ytma-utm
kre-euif-uae-`
enldbgno`nm r
kre-euif-omn`nm -``nm -`
enldbgnocmo-uae i-uae r
kre-ee-uae-`
enldvl`nm r
137. BUNDLER_EXT
#ctGmie
a efl
gm'al' '..0
e ris, 301'
gm'sn
e jo'
gm'etcin' :eur = 'etcin'
e rs-let, rqie > rs_let
gm'amt,'=054
e jmi' > ..'
gm'al_adn,'=052
e riswre' > ..'
gm'e-dp
e ntla'
gm'at'
e ouh
gm'dpfuf
e la_lf'
138. BUNDLER_EXT
i Fl.xs?Fl.xadpt(./.Gmiei' _FL_)
f ieeit(ieepn_ah'../efl.n, _IE_)
rqie'ude_x'
eur bnlret
Bnlrx.ytmrqieFl.xadpt(./.Gmiei' _FL
udeEtsse_eur(ieepn_ah'../efl.n, _IE
_) :ru1 :ru2 Risev
_, gop, gop, al.n)
es
le
Bnlrrqie:ru1 :ru2 Risev
ude.eur gop, gop, al.n
ed
n