SlideShare a Scribd company logo
1 of 31
Download to read offline
Os 12 fatores
uma metodologia para
criação de projetos SaaS
Quem?
Elton Minetto
Fundador da Coderockr
Graduado/pós-graduado em Ciência da Computação
Desenvolvedor desde 1997
Professor desde 2004
Autor de quatro livros sobre PHP
@eminetto
O que?
Criado pela equipe da
Heroku é uma espécie
de “manifesto” com os
12 fatores que uma
aplicação SaaS deveria
seguir para ter sucesso
I.Codebase
Uma única base de
código, múltiplos
deploys, gerenciado
por controle de
versões
II.Dependencies
Dependências
isoladas do código
Composer (PHP),
Bower (JS), etc
III.Config
Configurações
armazenadas fora do
código.
Variáveis de ambiente,
arquivos distintos para
ambientes distintos
IV.Backing Services
Serviços externos que o
aplicativo consome.
Banco de dados, cache,
podem estar tanto locais
quanto remotos sem
mudanças de código
V.Build, release, run
Três fases bem separadas e
definidas facilita a criação de
scripts e procedimentos a
serem executados em cada
uma delas.
Capistrano, Ant, Deployer,
Grunt, etc
VI.Processes
O aplicativo como um ou
mais processos, que sejam
“stateless” e “share-
nothing”
Diminuir o acoplamento entre
componentes do projeto
para facilitar a escala
VII.Port binding
Não depender de um servidor externo
para ser executado, poder ser auto-
contido e executar em uma porta
específica que seria acessado por
outras partes do projeto.
Depender de uma estrutura de
nomes e endereços que podem ser
configurados em arquivos de
configuração
VIII. Concurrency
Pensar o projeto como
processos que podem
ser executados em
paralelo.
RabbitMQ, Gearman,
etc
IX. Disposability
Processos facilmente
descartáveis, que podem ser
iniciados ou parados a qualquer
momento.
Facilitar este processo, permitindo
início rápido, processo de
finalização simplificado
X. Dev/prod parity
Ambientes de
desenvolvimento,
homologação e produção
o mais similares possíveis.
Vagrant, Puppet, Docker,
etc
XI. Logs
O código não deve se preocupar
com o formato de armazenamento,
enviar as mensagens para a saída
padrão e esta deve ser redirecionada
para locais específicos de acordo
com o ambiente onde o projeto está
executando.
Monolog, Loggly, etc
XII. Admin processes
Tarefas administrativas como
limpar caches, carregar
dados, atualizar bases de
dados, devem ser tratadas
de forma automatizada
Contato
http://eltonminetto.net
@eminetto
eminetto@coderockr.com
http://asemanaphp.com.br
http://coderockr.com

More Related Content

What's hot

Gestão de Produtos de Software - muito além do product ownership e das startups
Gestão de Produtos de Software - muito além do product ownership e das startupsGestão de Produtos de Software - muito além do product ownership e das startups
Gestão de Produtos de Software - muito além do product ownership e das startupsJoaquim Torres
 
Técnico em Redes de Computadores
Técnico em Redes de ComputadoresTécnico em Redes de Computadores
Técnico em Redes de Computadorestiredes
 
Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...
Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...
Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...Jaime Eugenio
 
ESw 09 - Exercicio pratico.pdf
ESw 09 - Exercicio pratico.pdfESw 09 - Exercicio pratico.pdf
ESw 09 - Exercicio pratico.pdfGabrielMarchesan
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebAnderson Luís Furlan
 
Gestão de Serviços de TI com a ITIL. Uma introdução
Gestão de Serviços de TI com a ITIL. Uma introduçãoGestão de Serviços de TI com a ITIL. Uma introdução
Gestão de Serviços de TI com a ITIL. Uma introduçãoRildo (@rildosan) Santos
 
Gerência de Redes - 7.Ferramentas e Sitemas de Gerenciamento
Gerência de Redes - 7.Ferramentas e Sitemas de GerenciamentoGerência de Redes - 7.Ferramentas e Sitemas de Gerenciamento
Gerência de Redes - 7.Ferramentas e Sitemas de GerenciamentoMauro Tapajós
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação webCentro Paula Souza
 

What's hot (12)

Gestão de Produtos de Software - muito além do product ownership e das startups
Gestão de Produtos de Software - muito além do product ownership e das startupsGestão de Produtos de Software - muito além do product ownership e das startups
Gestão de Produtos de Software - muito além do product ownership e das startups
 
Técnico em Redes de Computadores
Técnico em Redes de ComputadoresTécnico em Redes de Computadores
Técnico em Redes de Computadores
 
Apresentação sobre ipv6
Apresentação sobre ipv6Apresentação sobre ipv6
Apresentação sobre ipv6
 
Aula1 historia das redes
Aula1   historia das redesAula1   historia das redes
Aula1 historia das redes
 
Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...
Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...
Arquitetura Híbrida - Do Back-end ao Front-end com .NET Core, Vue.js, Electro...
 
ESw 09 - Exercicio pratico.pdf
ESw 09 - Exercicio pratico.pdfESw 09 - Exercicio pratico.pdf
ESw 09 - Exercicio pratico.pdf
 
Introdução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento WebIntrodução ao Front-end no Desenvolvimento Web
Introdução ao Front-end no Desenvolvimento Web
 
Obesidade
ObesidadeObesidade
Obesidade
 
Obesidade
ObesidadeObesidade
Obesidade
 
Gestão de Serviços de TI com a ITIL. Uma introdução
Gestão de Serviços de TI com a ITIL. Uma introduçãoGestão de Serviços de TI com a ITIL. Uma introdução
Gestão de Serviços de TI com a ITIL. Uma introdução
 
Gerência de Redes - 7.Ferramentas e Sitemas de Gerenciamento
Gerência de Redes - 7.Ferramentas e Sitemas de GerenciamentoGerência de Redes - 7.Ferramentas e Sitemas de Gerenciamento
Gerência de Redes - 7.Ferramentas e Sitemas de Gerenciamento
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação web
 

Viewers also liked

Desenvolvimento de aplicativos para FirefoxOS
Desenvolvimento de aplicativos para FirefoxOSDesenvolvimento de aplicativos para FirefoxOS
Desenvolvimento de aplicativos para FirefoxOSElton Minetto
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
PHP like a Super Hero - V3
PHP like a Super Hero - V3PHP like a Super Hero - V3
PHP like a Super Hero - V3Elton Minetto
 
Memorias das trincheiras - 2015
Memorias das trincheiras - 2015Memorias das trincheiras - 2015
Memorias das trincheiras - 2015Elton Minetto
 
Do monolito ao micro serviço
Do monolito ao micro serviçoDo monolito ao micro serviço
Do monolito ao micro serviçoElton Minetto
 
Como manter a qualidade do seu projeto sem perder a sua sanidade!
Como manter a qualidade do seu projeto sem perder a sua sanidade!Como manter a qualidade do seu projeto sem perder a sua sanidade!
Como manter a qualidade do seu projeto sem perder a sua sanidade!Elton Minetto
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Desenvolvendo APIs em Go usando Middlewares
Desenvolvendo APIs em Go usando MiddlewaresDesenvolvendo APIs em Go usando Middlewares
Desenvolvendo APIs em Go usando MiddlewaresElton Minetto
 
Metodologias ágeis interativas
Metodologias ágeis interativasMetodologias ágeis interativas
Metodologias ágeis interativasElton Minetto
 
6 questões que levam à inovação
6 questões que levam à inovação6 questões que levam à inovação
6 questões que levam à inovaçãoElton Minetto
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento MobileElton Minetto
 
Creating an API with Expressive
Creating an API with ExpressiveCreating an API with Expressive
Creating an API with ExpressiveElton Minetto
 
De Padawan a Jedi - Versão 2016
De Padawan a Jedi - Versão 2016De Padawan a Jedi - Versão 2016
De Padawan a Jedi - Versão 2016Elton Minetto
 
PSR-7, middlewares e o futuro dos frameworks
PSR-7, middlewares e o futuro dos frameworksPSR-7, middlewares e o futuro dos frameworks
PSR-7, middlewares e o futuro dos frameworksElton Minetto
 

Viewers also liked (14)

Desenvolvimento de aplicativos para FirefoxOS
Desenvolvimento de aplicativos para FirefoxOSDesenvolvimento de aplicativos para FirefoxOS
Desenvolvimento de aplicativos para FirefoxOS
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
PHP like a Super Hero - V3
PHP like a Super Hero - V3PHP like a Super Hero - V3
PHP like a Super Hero - V3
 
Memorias das trincheiras - 2015
Memorias das trincheiras - 2015Memorias das trincheiras - 2015
Memorias das trincheiras - 2015
 
Do monolito ao micro serviço
Do monolito ao micro serviçoDo monolito ao micro serviço
Do monolito ao micro serviço
 
Como manter a qualidade do seu projeto sem perder a sua sanidade!
Como manter a qualidade do seu projeto sem perder a sua sanidade!Como manter a qualidade do seu projeto sem perder a sua sanidade!
Como manter a qualidade do seu projeto sem perder a sua sanidade!
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Desenvolvendo APIs em Go usando Middlewares
Desenvolvendo APIs em Go usando MiddlewaresDesenvolvendo APIs em Go usando Middlewares
Desenvolvendo APIs em Go usando Middlewares
 
Metodologias ágeis interativas
Metodologias ágeis interativasMetodologias ágeis interativas
Metodologias ágeis interativas
 
6 questões que levam à inovação
6 questões que levam à inovação6 questões que levam à inovação
6 questões que levam à inovação
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
 
Creating an API with Expressive
Creating an API with ExpressiveCreating an API with Expressive
Creating an API with Expressive
 
De Padawan a Jedi - Versão 2016
De Padawan a Jedi - Versão 2016De Padawan a Jedi - Versão 2016
De Padawan a Jedi - Versão 2016
 
PSR-7, middlewares e o futuro dos frameworks
PSR-7, middlewares e o futuro dos frameworksPSR-7, middlewares e o futuro dos frameworks
PSR-7, middlewares e o futuro dos frameworks
 

Similar to 12 fatores SaaS projetos

Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livreelliando dias
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPElton Minetto
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3Fabrício Basto
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...tdc-globalcode
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018Graziella Bonizi
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppMarcela Godoy Cruz
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioGeovani Ferreira Gonçalves
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012Luís Cobucci
 
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...Bruno Grange
 
Desafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservicesDesafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservicesleopoa
 
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Pedro Lamas
 

Similar to 12 fatores SaaS projetos (20)

Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
 
Frameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHP
 
Software livre - Parte 3
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3
 
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ...
 
12 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
Zeus Framework
Zeus FrameworkZeus Framework
Zeus Framework
 
Construindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor App
 
EF Core Deep Dive
EF Core Deep DiveEF Core Deep Dive
EF Core Deep Dive
 
Desenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual StudioDesenvolvimento de Aplicações com Visual Studio
Desenvolvimento de Aplicações com Visual Studio
 
Adobe Flex
Adobe FlexAdobe Flex
Adobe Flex
 
Adobe Flex
Adobe FlexAdobe Flex
Adobe Flex
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Tecnologias ria2
Tecnologias ria2Tecnologias ria2
Tecnologias ria2
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po...
 
Fundamentos em Containers
Fundamentos em ContainersFundamentos em Containers
Fundamentos em Containers
 
Desafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservicesDesafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservices
 
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
 

More from Elton Minetto

Go e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroElton Minetto
 
Object Calisthenics em Go
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em GoElton Minetto
 
Programar != desenvolver software (v2)
Programar != desenvolver software (v2)Programar != desenvolver software (v2)
Programar != desenvolver software (v2)Elton Minetto
 
Gerenciando uma startup no Github Projects
Gerenciando uma startup no Github ProjectsGerenciando uma startup no Github Projects
Gerenciando uma startup no Github ProjectsElton Minetto
 
Clean architecture em Go - v2
Clean architecture em Go - v2Clean architecture em Go - v2
Clean architecture em Go - v2Elton Minetto
 
Programar != desenvolver software
Programar != desenvolver softwareProgramar != desenvolver software
Programar != desenvolver softwareElton Minetto
 
Clean Architecture em PHP
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHPElton Minetto
 
Clean Architecture in Golang
Clean Architecture in GolangClean Architecture in Golang
Clean Architecture in GolangElton Minetto
 
A jornada do desenvolvedor
A jornada do desenvolvedorA jornada do desenvolvedor
A jornada do desenvolvedorElton Minetto
 
Product and Technology
Product and TechnologyProduct and Technology
Product and TechnologyElton Minetto
 
Code:Nation Tech Stack
Code:Nation Tech StackCode:Nation Tech Stack
Code:Nation Tech StackElton Minetto
 
Modernizando projetos legados usando APIs
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIsElton Minetto
 
12 factor in the PHP world
12 factor in the PHP world12 factor in the PHP world
12 factor in the PHP worldElton Minetto
 
Building APIs using Go
Building APIs using GoBuilding APIs using Go
Building APIs using GoElton Minetto
 
O case da Compufácil e AWS
O case da Compufácil e AWSO case da Compufácil e AWS
O case da Compufácil e AWSElton Minetto
 

More from Elton Minetto (20)

Go e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outro
 
Object Calisthenics em Go
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em Go
 
Programar != desenvolver software (v2)
Programar != desenvolver software (v2)Programar != desenvolver software (v2)
Programar != desenvolver software (v2)
 
Gerenciando uma startup no Github Projects
Gerenciando uma startup no Github ProjectsGerenciando uma startup no Github Projects
Gerenciando uma startup no Github Projects
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Serverless em Go
Serverless em GoServerless em Go
Serverless em Go
 
JAMstack
JAMstackJAMstack
JAMstack
 
Clean architecture em Go - v2
Clean architecture em Go - v2Clean architecture em Go - v2
Clean architecture em Go - v2
 
Programar != desenvolver software
Programar != desenvolver softwareProgramar != desenvolver software
Programar != desenvolver software
 
Clean Architecture em PHP
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHP
 
Clean Architecture in Golang
Clean Architecture in GolangClean Architecture in Golang
Clean Architecture in Golang
 
A jornada do desenvolvedor
A jornada do desenvolvedorA jornada do desenvolvedor
A jornada do desenvolvedor
 
Product and Technology
Product and TechnologyProduct and Technology
Product and Technology
 
Code:Nation Tech Stack
Code:Nation Tech StackCode:Nation Tech Stack
Code:Nation Tech Stack
 
Modernizando projetos legados usando APIs
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIs
 
12 factor in the PHP world
12 factor in the PHP world12 factor in the PHP world
12 factor in the PHP world
 
Building APIs using Go
Building APIs using GoBuilding APIs using Go
Building APIs using Go
 
Start you
Start youStart you
Start you
 
O case da Compufácil e AWS
O case da Compufácil e AWSO case da Compufácil e AWS
O case da Compufácil e AWS
 
Introdução a Go
Introdução a GoIntrodução a Go
Introdução a Go
 

12 fatores SaaS projetos