SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
Arquiteturas 
Executáveis 
ÉVERTON RIBEIRO
@nuxlli 
manutenção, operação, 
desenvolvimento, 
pesquisa e 
empreendimento
D vs O
desenvolvimento vs. operação
Arquitetura da aplicação Arquitetura do sistema 
Entregar para ontem a 
solução que atenda todos 
os requisitos funcionais. 
Garantir que seja lá o que o 
dev entregue: rode, seja 
seguro e escale. (ontem)
Se a comunicação falhar, a 
aplicação falhará e todos 
perdem.
Soluções?!?
Documentações 
Wikis, playbooks, 
chats, café…
O principal problema das 
documentações de arquitetura 
é que ninguém atualiza.
Ferramentas 
chef, puppet, ansible, vagrant, 
terraform, monit, god…
Lembre-se: desenvolvedores 
estão focados em desenvolver. 
E deveriam estar mesmo!
vagrant, 
terraform, 
monit, god…
Operation Engineer 
Muito importante e funciona, 
mas tem custo alto e ainda 
opera por instrumentos.
Se boas práticas fossem fáceis 
de adotar a documentação 
estaria em dia ;)
Arquiteturas 
executáveis
Linguagem de alto nível, que 
diferente de fluxogramas…
… pode ser interpretada para 
implantação e automação de 
sistemas.
systems({ 
api: { 
image : "ruby", 
depends: [ "mysql" ], 
//... 
}, 
mysql: //..., 
});
systems({ 
api: { 
image : "ruby", 
depends: [ "mysql" ], 
ports : { http: "80/tcp" }, 
}, 
mysql: { 
ports: { data: "3306/tcp" }, 
}, 
});
systems({ 
api: { 
image : "ruby", 
depends: [ "mysql" ], 
ports : { http: "80/tcp" }, 
http : { domains: [ "api.myapp.azk.dev" ] }, 
}, 
mysql: { 
ports: { data: "3306/tcp" }, 
}, 
});
systems({ 
api: { 
image : "ruby", 
depends: [ "mysql" ], 
ports : { http: "80/tcp" }, 
http : { domains: [ "api.myapp.azk.dev" ] }, 
}, 
mysql: { 
envs : { USER: "user", PASSWORD: "pass" }, //.env 
ports: { data: "3306/tcp" }, 
}, 
});
A "documentação" da arquitetura 
se torna parte da solução, sendo 
essencial na sua execução.
É resultado do fluxo de trabalho 
do desenvolvedor e do arquiteto 
de sistemas.
fluxo de trabalho
fluxo de trabalho 
arquitetura
AZK
Ferramenta open source para 
orquestração de ambientes 
de desenvolvimento…
Configuração 
DNS 
Instalação 
Webservices 
Logs 
Monitoramento 
AZK 
Dependências 
Receitas
…através de arquivos 
manifesto de alto nível.
É uma descrição sucinta dos 
componentes que formam a 
arquitetura da aplicação.
Bem como da relação entre 
esses componentes e de que 
forma eles são acessados.
Exemplificando:
small.io - Web (Rails) 
- Database (Mysql)
$ cd ~/blog 
$ azk init 
azk: System ruby/rails detected: ‘blog’ 
azk: Required system mysql detected in ‘blog' 
azk: ‘Azkfile.js’ generated 
! 
Tip: 
Adds the `.azk` in .gitignore 
echo ‘.azk’ >> .gitignore
// Azkfile.js (JavaScript DSL) 
systems({ 
blog: { 
image : "azukiapp/ruby", 
depends : [ "mysqldb" ], 
provision : [ "bundle install /azk/bundler" ], 
command : "rackup -s thin", 
mounts : { 
"/azk/#{manifest.dir}": path("."), 
“/azk/bundler" : persistent("bundler"), 
}, 
scalable : { default: 2 }, 
http: { domains: [ "#{system.name}.azk.dev" ], }, 
env : [ RUBY_ENV: "dev", BUNDLE_APP_CONFIG: "/azk/bundler" ], 
}, 
mysqldb: { 
image : "azukiapp/mysql", 
mounts: { "/data/db": persistent("data") }, 
}, 
});
$ azk start 
! 
Get images: 
- azukiapp/mysql 
- azukiapp/ruby 
! 
Starting: 
- db 
- blog (instances: 3) (linked with: db)
E PRONTO! 
Basta acessar http://blog.dev.azk 
e sua aplicação já esta rodando.
Apenas 3 passos simples 
- Instalar o azk 
- $ azk init 
- $ azk start
Microservice
Um projeto ou aplicação, mesmo 
simples, pode ser visto como um 
System of Systems (SoS).
Em outras palavras 
Microservice Architecture. 
http://martinfowler.com/articles/ 
microservices.html
small.io - Web 
- Database
big.com 
- Front 
- Databases: 
- Mysql 
- Redis 
- Workers 
- API 
- Proxy payment 
- Facebook auth 
- etc…
"Ambientes podem ser complexos 
só não podem ser desordenados" 
(@fnando)
Resumindo
A comunicação se dá por 
meio do manifesto e da 
ferramenta.
Uma lingua franca é 
estabelecida para 
comunicação do time.
Lembre-se: arquiteturas de 
aplicações e de sistemas devem 
ser vivas e vividas no seu projeto.
Status do azk
Versão 0.6.1 estável 
disponível em http://azk.io
Para mac e linux, 
windows em breve.
Documentação 
Hoje: apenas o README e 
exemplos. Mas temos mais a 
caminho.
Suporte 
Github issues e 
e-mail.
Éverton Ribeiro // @nuxlli 
everton@azukiapp.com 
! 
Slides: bit.ly/weop_arquiteturas_executaveis

Mais conteúdo relacionado

Destaque

RelaçãO Arte&Arquitetura&ComunicaçãO
RelaçãO Arte&Arquitetura&ComunicaçãORelaçãO Arte&Arquitetura&ComunicaçãO
RelaçãO Arte&Arquitetura&ComunicaçãOJoseSimas
 
Palestra Usabilidade
Palestra UsabilidadePalestra Usabilidade
Palestra Usabilidadelucattony
 
Bate-papo sobre Arquitetura de Informação - Parte I
Bate-papo sobre Arquitetura de Informação - Parte IBate-papo sobre Arquitetura de Informação - Parte I
Bate-papo sobre Arquitetura de Informação - Parte Ilucattony
 
Canvas do planejamento de comunicação
Canvas do planejamento de comunicaçãoCanvas do planejamento de comunicação
Canvas do planejamento de comunicaçãoDanila Dourado
 

Destaque (8)

RelaçãO Arte&Arquitetura&ComunicaçãO
RelaçãO Arte&Arquitetura&ComunicaçãORelaçãO Arte&Arquitetura&ComunicaçãO
RelaçãO Arte&Arquitetura&ComunicaçãO
 
Palestra Usabilidade
Palestra UsabilidadePalestra Usabilidade
Palestra Usabilidade
 
Bate-papo sobre Arquitetura de Informação - Parte I
Bate-papo sobre Arquitetura de Informação - Parte IBate-papo sobre Arquitetura de Informação - Parte I
Bate-papo sobre Arquitetura de Informação - Parte I
 
Educação para era sustentabilidade
Educação para era sustentabilidadeEducação para era sustentabilidade
Educação para era sustentabilidade
 
Jogo De Etica
Jogo De EticaJogo De Etica
Jogo De Etica
 
Comunicação visual
Comunicação visualComunicação visual
Comunicação visual
 
Canvas do planejamento de comunicação
Canvas do planejamento de comunicaçãoCanvas do planejamento de comunicação
Canvas do planejamento de comunicação
 
Pós Endomarketing e comunicação corporativa
Pós Endomarketing e comunicação corporativaPós Endomarketing e comunicação corporativa
Pós Endomarketing e comunicação corporativa
 

Semelhante a Arquitetura executável: Documentando e automatizando a comunicação da equipe de desenvolvimento com a equipe de operações - Éverton Ribeiro (Azuki), WeOp - The Operations Summit 2014

Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiRicardo Martins ☁
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
 
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
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Da Exploração à Produção - Inteligência Artificial com a plataforma Marvin
Da Exploração à Produção - Inteligência Artificial com a plataforma MarvinDa Exploração à Produção - Inteligência Artificial com a plataforma Marvin
Da Exploração à Produção - Inteligência Artificial com a plataforma MarvinDaniel Takabayashi, MSc
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )João Moura
 
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosHUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosPhilippe Sevestre
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.jsAlberto Souza
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Marcelo Dieder
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - BrazilStephen Chin
 

Semelhante a Arquitetura executável: Documentando e automatizando a comunicação da equipe de desenvolvimento com a equipe de operações - Éverton Ribeiro (Azuki), WeOp - The Operations Summit 2014 (20)

Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - Bemobi
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
Containers com docker #CPRecife4
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
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
 
Introdução Play framework
Introdução Play frameworkIntrodução Play framework
Introdução Play framework
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Da Exploração à Produção - Inteligência Artificial com a plataforma Marvin
Da Exploração à Produção - Inteligência Artificial com a plataforma MarvinDa Exploração à Produção - Inteligência Artificial com a plataforma Marvin
Da Exploração à Produção - Inteligência Artificial com a plataforma Marvin
 
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
WebSocket com Node.js ( socketstream && coffeescript ) X RoR ( Juggernaut )
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosHUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.js
 
Cygwin
CygwinCygwin
Cygwin
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 

Arquitetura executável: Documentando e automatizando a comunicação da equipe de desenvolvimento com a equipe de operações - Éverton Ribeiro (Azuki), WeOp - The Operations Summit 2014