dualtec open stack meeting: agilidade + cloud
DESCRIPTION
Mover seus projetos pra "cloud" não é só copiar e colar o código das suas aplicações numa máquina na Amazon EC2. Isso além de não escalar é uma estupidez. Na comunidade Rails, para aplicações pequenas e médias (e até algumas grandes) isso já é um problema "resolvido", no sentido de que estamos consciente do processo e práticas envolvidas em criar um aplicação escalável. O Heroku resumiu as principais no 12factor.net. E a realidade é que a indústria de TI como um todo ainda ignora tudo isso. Esta palestra não é para mostrar o futuro, mas sim para mostrar o passado: como nós já usamos isso rotineiramente sem nem pensar mais a respeito enquanto a maioria está 5 anos atrasado em relação a nós.TRANSCRIPT
Agilidade + CloudCiclo de Trabalho para Aplicações Escaláveis
THE FOLLOWING HAS BEEN APPROVED FOR HORROR-MINDED AUDIENCES
EXPLICIT LANGUAGE, GRAPHIC VIOLENCE, GORE, SUFFERING, (BUT NO NUDITY)
The Twelve-Factor Apphttp://12factor.net/
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
production
staging
developer 1
developer 2
Codebase Deploys
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Production!Deploy
Postgresql
Sendgrid AWS S3
Twitterpostgres://auth@host/db
smtp://auth@host
postgres://[email protected]
postgres://[email protected]/bucket
Attached Resources
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Codebase
Release
Build
Config!{}
git push heroku master
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Application!(Box 1)
Application!(Box 2)
Application!(Box 3)
AWS S3 Memcachier
User Browser
Application!(Box 1)
Application!(Box 2)
Application!(Box 3)
AWS S3 Memcachier
User Browser
Application!(Box 1)
Application!(Box 2)
Application!(Box 3)
AWS S3 Memcachier
User Browser
Application!(Box 1)
Application!(Box 2)
Application!(Box 3)
AWS S3 Memcachier
User Browser
Application!(Box 1)
Application!(Box 2)
Application!(Box 3)
AWS S3 Memcachier
User Browser
Application!(Box 1)
Application!(Box 2)
Application!(Box 3)
AWS S3 Memcachier
User Browser
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
web.1 worker.1 scheduler.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.1 worker.1 scheduler.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2
web.1 worker.1 scheduler.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2 worker.2
web.1 worker.1 scheduler.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2 worker.2
worker.3
worker.4
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
web.1 worker.1 scheduler.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2 worker.2
worker.3
worker.4
worker.1 scheduler.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2
worker.4
web.3
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
Codebase in GIT Build, release, run Disposability
Explicit and Isolated Dependencies
Stateless Processes
Dev/prod Parity
Config in ENV Port Binding Log Streams
Backing Services as Attached Resources
Scale-Out Concurrency
One-off Admin Processes
web.1 worker.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2 worker.2
worker.3
worker.4
web.3
web.1 worker.1 console.6893
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2 worker.2
worker.3
worker.4
web.3
web.1 worker.1
Workload Diversity (process types)
Scal
e (r
unni
ng p
roce
sses
)
web.2 worker.2
worker.3
worker.4
web.3
3 anos (set/11 - jul/13)
3 anos (set/11 - jul/13)
72 repos (97 total)
3 anos (set/11 - jul/13)
72 repos (97 total)
432k LOC (157k LOC Ruby)
3 anos (set/11 - jul/13)
72 repos (97 total)
432k LOC (157k LOC Ruby)
+60 apps Heroku
OBRIGADO!slideshare.net/akitaonrails
@akitaonrails