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...
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...
systems({ 
api: { 
image : "ruby", 
depends: [ "mysql" ], 
ports : { http: "80/tcp" }, 
http : { domains: [ "api.myapp.azk...
systems({ 
api: { 
image : "ruby", 
depends: [ "mysql" ], 
ports : { http: "80/tcp" }, 
http : { domains: [ "api.myapp.azk...
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: ‘Azk...
// Azkfile.js (JavaScript DSL) 
systems({ 
blog: { 
image : "azukiapp/ruby", 
depends : [ "mysqldb" ], 
provision : [ "bun...
$ 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
Arquitetura executável: Documentando e automatizando a comunicação da equipe de desenvolvimento com a equipe de operações ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe de desenvolvimento com a equipe de operações ...
Arquitetura executável: Documentando e automatizando a comunicação da equipe de desenvolvimento com a equipe de operações ...
Próximos SlideShares
Carregando em…5
×

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

218 visualizações

Publicada em

Com o surgimento de frameworks cada dia mais avançados e fáceis de utilizar, desenvolvedores estão cada dia mais focados na lógica de negócio e menos na infraestrutura necessária para execução das aplicações, que acabam por se tornar mais complexas, multi stack e distribuídas.
Mesmo com a evolução gigantesca na área automação que acompanhou esses frameworks (evolução essa liderada por técnologias como Capistrano, Heroku (PaaS) e Vagrant) o gargalo de comunicação entre equipe de desenvolvimento e operações continua a ser o maior impasse da área na hora de colocar uma solução para rodar.
Nesta palaestra vamos falar sobre "arquitetura executável" com foco na ferramenta open source de orquestração: AZK. Uma ferramenta que ajuda a ganhar agilidade no processo de orquestração do ambiente de desenvolvimento, mas sobre tudo tem como resultado uma "documentação executável da arquitetura" que facilita muito a vida de toda a equipe.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
218
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Arquiteturas Executáveis ÉVERTON RIBEIRO
  2. 2. @nuxlli manutenção, operação, desenvolvimento, pesquisa e empreendimento
  3. 3. D vs O
  4. 4. desenvolvimento vs. operação
  5. 5. 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)
  6. 6. Se a comunicação falhar, a aplicação falhará e todos perdem.
  7. 7. Soluções?!?
  8. 8. Documentações Wikis, playbooks, chats, café…
  9. 9. O principal problema das documentações de arquitetura é que ninguém atualiza.
  10. 10. Ferramentas chef, puppet, ansible, vagrant, terraform, monit, god…
  11. 11. Lembre-se: desenvolvedores estão focados em desenvolver. E deveriam estar mesmo!
  12. 12. vagrant, terraform, monit, god…
  13. 13. Operation Engineer Muito importante e funciona, mas tem custo alto e ainda opera por instrumentos.
  14. 14. Se boas práticas fossem fáceis de adotar a documentação estaria em dia ;)
  15. 15. Arquiteturas executáveis
  16. 16. Linguagem de alto nível, que diferente de fluxogramas…
  17. 17. … pode ser interpretada para implantação e automação de sistemas.
  18. 18. systems({ api: { image : "ruby", depends: [ "mysql" ], //... }, mysql: //..., });
  19. 19. systems({ api: { image : "ruby", depends: [ "mysql" ], ports : { http: "80/tcp" }, }, mysql: { ports: { data: "3306/tcp" }, }, });
  20. 20. systems({ api: { image : "ruby", depends: [ "mysql" ], ports : { http: "80/tcp" }, http : { domains: [ "api.myapp.azk.dev" ] }, }, mysql: { ports: { data: "3306/tcp" }, }, });
  21. 21. 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" }, }, });
  22. 22. A "documentação" da arquitetura se torna parte da solução, sendo essencial na sua execução.
  23. 23. É resultado do fluxo de trabalho do desenvolvedor e do arquiteto de sistemas.
  24. 24. fluxo de trabalho
  25. 25. fluxo de trabalho arquitetura
  26. 26. AZK
  27. 27. Ferramenta open source para orquestração de ambientes de desenvolvimento…
  28. 28. Configuração DNS Instalação Webservices Logs Monitoramento AZK Dependências Receitas
  29. 29. …através de arquivos manifesto de alto nível.
  30. 30. É uma descrição sucinta dos componentes que formam a arquitetura da aplicação.
  31. 31. Bem como da relação entre esses componentes e de que forma eles são acessados.
  32. 32. Exemplificando:
  33. 33. small.io - Web (Rails) - Database (Mysql)
  34. 34. $ 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
  35. 35. // 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") }, }, });
  36. 36. $ azk start ! Get images: - azukiapp/mysql - azukiapp/ruby ! Starting: - db - blog (instances: 3) (linked with: db)
  37. 37. E PRONTO! Basta acessar http://blog.dev.azk e sua aplicação já esta rodando.
  38. 38. Apenas 3 passos simples - Instalar o azk - $ azk init - $ azk start
  39. 39. Microservice
  40. 40. Um projeto ou aplicação, mesmo simples, pode ser visto como um System of Systems (SoS).
  41. 41. Em outras palavras Microservice Architecture. http://martinfowler.com/articles/ microservices.html
  42. 42. small.io - Web - Database
  43. 43. big.com - Front - Databases: - Mysql - Redis - Workers - API - Proxy payment - Facebook auth - etc…
  44. 44. "Ambientes podem ser complexos só não podem ser desordenados" (@fnando)
  45. 45. Resumindo
  46. 46. A comunicação se dá por meio do manifesto e da ferramenta.
  47. 47. Uma lingua franca é estabelecida para comunicação do time.
  48. 48. Lembre-se: arquiteturas de aplicações e de sistemas devem ser vivas e vividas no seu projeto.
  49. 49. Status do azk
  50. 50. Versão 0.6.1 estável disponível em http://azk.io
  51. 51. Para mac e linux, windows em breve.
  52. 52. Documentação Hoje: apenas o README e exemplos. Mas temos mais a caminho.
  53. 53. Suporte Github issues e e-mail.
  54. 54. Éverton Ribeiro // @nuxlli everton@azukiapp.com ! Slides: bit.ly/weop_arquiteturas_executaveis

×