Os 12 fatores: uma metodologia para criação de projetos SaaS

Elton Minetto
Elton MinettoSoftware developer, teacher, speaker, open source evangelist, tech leader at Code:Nation
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
1 of 31

Recommended

Projeto da cadeia produtiva da cana de-açucar by
Projeto  da cadeia produtiva da cana de-açucarProjeto  da cadeia produtiva da cana de-açucar
Projeto da cadeia produtiva da cana de-açucarRosalva Aparecida Costa
7.7K views37 slides
Öğreten ve Öğrenen Rolleri by
Öğreten ve Öğrenen Rolleri Öğreten ve Öğrenen Rolleri
Öğreten ve Öğrenen Rolleri Özge Köse
437 views21 slides
Estrategia PNLE Secundaria by
Estrategia PNLE SecundariaEstrategia PNLE Secundaria
Estrategia PNLE Secundariascorpioecm
2.4K views24 slides
Tutorial: “How to use ontology repositories and ontology–based services” by
Tutorial: “How to use ontology repositories and ontology–based services”Tutorial: “How to use ontology repositories and ontology–based services”
Tutorial: “How to use ontology repositories and ontology–based services”INRAE (MISTEA) and University of Montpellier (LIRMM)
1.2K views107 slides
презентация1 by
презентация1презентация1
презентация1radionivka
2.6K views36 slides
Prova diagnostica geografia 2013 by
Prova diagnostica geografia 2013Prova diagnostica geografia 2013
Prova diagnostica geografia 2013Atividades Diversas Cláudia
42.6K views4 slides

More Related Content

Viewers also liked

Desenvolvimento de aplicativos para FirefoxOS by
Desenvolvimento de aplicativos para FirefoxOSDesenvolvimento de aplicativos para FirefoxOS
Desenvolvimento de aplicativos para FirefoxOSElton Minetto
1.1K views18 slides
Memcached, Gearman e Sphinx by
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
1.4K views47 slides
PHP like a Super Hero - V3 by
PHP like a Super Hero - V3PHP like a Super Hero - V3
PHP like a Super Hero - V3Elton Minetto
1.1K views36 slides
Memorias das trincheiras - 2015 by
Memorias das trincheiras - 2015Memorias das trincheiras - 2015
Memorias das trincheiras - 2015Elton Minetto
1.2K views40 slides
Do monolito ao micro serviço by
Do monolito ao micro serviçoDo monolito ao micro serviço
Do monolito ao micro serviçoElton Minetto
848 views26 slides
Como manter a qualidade do seu projeto sem perder a sua sanidade! by
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
1.2K views80 slides

Viewers also liked(14)

Desenvolvimento de aplicativos para FirefoxOS by Elton Minetto
Desenvolvimento de aplicativos para FirefoxOSDesenvolvimento de aplicativos para FirefoxOS
Desenvolvimento de aplicativos para FirefoxOS
Elton Minetto1.1K views
Memcached, Gearman e Sphinx by Elton Minetto
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
Elton Minetto1.4K views
PHP like a Super Hero - V3 by Elton Minetto
PHP like a Super Hero - V3PHP like a Super Hero - V3
PHP like a Super Hero - V3
Elton Minetto1.1K views
Memorias das trincheiras - 2015 by Elton Minetto
Memorias das trincheiras - 2015Memorias das trincheiras - 2015
Memorias das trincheiras - 2015
Elton Minetto1.2K views
Do monolito ao micro serviço by Elton Minetto
Do monolito ao micro serviçoDo monolito ao micro serviço
Do monolito ao micro serviço
Elton Minetto848 views
Como manter a qualidade do seu projeto sem perder a sua sanidade! by Elton 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!
Elton Minetto1.2K views
Desenvolvendo APIs em Go usando Middlewares by Elton Minetto
Desenvolvendo APIs em Go usando MiddlewaresDesenvolvendo APIs em Go usando Middlewares
Desenvolvendo APIs em Go usando Middlewares
Elton Minetto950 views
Metodologias ágeis interativas by Elton Minetto
Metodologias ágeis interativasMetodologias ágeis interativas
Metodologias ágeis interativas
Elton Minetto1.6K views
6 questões que levam à inovação by Elton Minetto
6 questões que levam à inovação6 questões que levam à inovação
6 questões que levam à inovação
Elton Minetto475 views
Desenvolvimento Mobile by Elton Minetto
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
Elton Minetto2.5K views
Creating an API with Expressive by Elton Minetto
Creating an API with ExpressiveCreating an API with Expressive
Creating an API with Expressive
Elton Minetto4.9K views
De Padawan a Jedi - Versão 2016 by Elton Minetto
De Padawan a Jedi - Versão 2016De Padawan a Jedi - Versão 2016
De Padawan a Jedi - Versão 2016
Elton Minetto627 views
PSR-7, middlewares e o futuro dos frameworks by Elton Minetto
PSR-7, middlewares e o futuro dos frameworksPSR-7, middlewares e o futuro dos frameworks
PSR-7, middlewares e o futuro dos frameworks
Elton Minetto3.4K views

Similar to Os 12 fatores: uma metodologia para criação de projetos SaaS

Desenvolvendo Aplicações com Software Livre by
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livreelliando dias
1K views30 slides
Frameworks de Desenvolvimento Web com PHP by
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHPElton Minetto
805 views40 slides
Software livre - Parte 3 by
Software livre - Parte 3Software livre - Parte 3
Software livre - Parte 3Fabrício Basto
305 views22 slides
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ... by
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
167 views24 slides
12 Factor App TDC São Paulo 2018 by
12 Factor App TDC São Paulo 201812 Factor App TDC São Paulo 2018
12 Factor App TDC São Paulo 2018Graziella Bonizi
136 views24 slides
Interoperabilidade com .NET em ambiente Mainframe by
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
1K views62 slides

Similar to Os 12 fatores: uma metodologia para criação de projetos SaaS(20)

Desenvolvendo Aplicações com Software Livre by elliando dias
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
elliando dias1K views
Frameworks de Desenvolvimento Web com PHP by Elton Minetto
Frameworks de Desenvolvimento Web com PHPFrameworks de Desenvolvimento Web com PHP
Frameworks de Desenvolvimento Web com PHP
Elton Minetto805 views
TDC2018SP | Trilha Arq .Net - 12-factor apps: Boas praticas na construcao de ... by tdc-globalcode
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-globalcode167 views
Interoperabilidade com .NET em ambiente Mainframe by Alessandro Binhara
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
Construindo Aplicações PHP com Twelve-Factor App by Marcela Godoy Cruz
Construindo Aplicações PHP com Twelve-Factor AppConstruindo Aplicações PHP com Twelve-Factor App
Construindo Aplicações PHP com Twelve-Factor App
Marcela Godoy Cruz335 views
Instalando e usando a XPages Extension Library para IBM Designer - extlib (Po... by Bruno Grange
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 Grange522 views
Desafios de implantar uma arquitetura de microservices by leopoa
Desafios de implantar uma arquitetura de microservicesDesafios de implantar uma arquitetura de microservices
Desafios de implantar uma arquitetura de microservices
leopoa149 views
Novidades no Windows Mobile Line of Business Solution Accelerator 2008 by Pedro Lamas
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
Pedro Lamas251 views

More from Elton Minetto

Go e Microserviços - Nascidos um para o outro by
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
1.9K views37 slides
Object Calisthenics em Go by
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em GoElton Minetto
792 views79 slides
Programar != desenvolver software (v2) by
Programar != desenvolver software (v2)Programar != desenvolver software (v2)
Programar != desenvolver software (v2)Elton Minetto
341 views22 slides
Gerenciando uma startup no Github Projects by
Gerenciando uma startup no Github ProjectsGerenciando uma startup no Github Projects
Gerenciando uma startup no Github ProjectsElton Minetto
402 views30 slides
Clean Architecture by
Clean ArchitectureClean Architecture
Clean ArchitectureElton Minetto
912 views37 slides
Serverless em Go by
Serverless em GoServerless em Go
Serverless em GoElton Minetto
428 views31 slides

More from Elton Minetto(20)

Go e Microserviços - Nascidos um para o outro by Elton Minetto
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
Elton Minetto1.9K views
Object Calisthenics em Go by Elton Minetto
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em Go
Elton Minetto792 views
Programar != desenvolver software (v2) by Elton Minetto
Programar != desenvolver software (v2)Programar != desenvolver software (v2)
Programar != desenvolver software (v2)
Elton Minetto341 views
Gerenciando uma startup no Github Projects by Elton Minetto
Gerenciando uma startup no Github ProjectsGerenciando uma startup no Github Projects
Gerenciando uma startup no Github Projects
Elton Minetto402 views
Clean architecture em Go - v2 by Elton Minetto
Clean architecture em Go - v2Clean architecture em Go - v2
Clean architecture em Go - v2
Elton Minetto652 views
Programar != desenvolver software by Elton Minetto
Programar != desenvolver softwareProgramar != desenvolver software
Programar != desenvolver software
Elton Minetto1.6K views
Clean Architecture em PHP by Elton Minetto
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHP
Elton Minetto3.3K views
Clean Architecture in Golang by Elton Minetto
Clean Architecture in GolangClean Architecture in Golang
Clean Architecture in Golang
Elton Minetto1.4K views
A jornada do desenvolvedor by Elton Minetto
A jornada do desenvolvedorA jornada do desenvolvedor
A jornada do desenvolvedor
Elton Minetto636 views
Modernizando projetos legados usando APIs by Elton Minetto
Modernizando projetos legados usando APIsModernizando projetos legados usando APIs
Modernizando projetos legados usando APIs
Elton Minetto1K views
12 factor in the PHP world by Elton Minetto
12 factor in the PHP world12 factor in the PHP world
12 factor in the PHP world
Elton Minetto1.4K views
O case da Compufácil e AWS by Elton Minetto
O case da Compufácil e AWSO case da Compufácil e AWS
O case da Compufácil e AWS
Elton Minetto256 views

Os 12 fatores: uma metodologia para criação de projetos SaaS