Dualtec Open Stack Meeting: Agilidade + Cloud

Preview:

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.

Citation preview

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://auth@api.twitter.com

postgres://auth@s3.amazonaws.com/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