Deployment tales
OLEKSANDR SIMONOV
About Me
•Oleksandr Simonov
•Businessman/Software Engineer/DevOps
•13 years in IT
•8 years with Ruby
•Open Source contributor
•Github: @simonoff
Shared Hosting Era
Dedicated Server Era
Cloud Era
What is wrong in every Era?
?!
Shared Hosting Era
Apache
Shared Hosting Era
Apache
PERL/CGI
Shared Hosting Era
Apache
PERL/CGI
PHP
Shared Hosting Era
Apache
PERL/CGI
PHP
MySQL
Deployment Process
1. Edit File
2. Upload
3. Open browser
4.Say: F*CK
5. Close browser
6. GOTO 1
Dedicated Server Era
Debian/Red Hat
Dedicated Server Era
Debian/Red Hat
sudo
Dedicated Server Era
Debian/Red Hat
sudo
vim
Dedicated Server Era
Debian/Red Hat
sudo
vim
rm -rf /
Deployment Process
tar cvzf suppa.tar.gz suppa
scp suppa.tar.gz root@server.com:/
ssh root@server.com
tar xvzf /suppa.tar.gz /var/www/
Cloud Era
capistrano
Cloud Era
capistrano
vlad
Cloud Era
capistrano
vlad
mina
Cloud Era
capistrano
vlad
mina
ssh -> cd ..-> rails s production
Cloud Era
Every Era Wrong
There is no daemons
There is a lot crushes
There is a lot bugs
There is no persistence on restart
“Something went wrong”
–Nginx default page
Usual fix
init script
passenger
Better fix
daemon tools
runit
systemd
RUNIT
a UNIX init scheme with service
supervision
capistrano + runit
capistrano + runit
all parts are services
all parts will be restarted
all parts management without
root/sudo
capistrano-runit gems collection
puma
sidekiq
resque
rake
https://github.com/
capistrano-runit
QUESTIONS?

Deployment tales