57
Arquiteturas Executáveis ÉVERTON RIBEIRO

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

Embed Size (px)

Citation preview

Page 1: 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

Arquiteturas Executáveis

ÉVERTON RIBEIRO

Page 2: 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

@nuxllimanutenção, operação,

desenvolvimento, pesquisa e

empreendimento

Page 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
Page 4: 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

D vs O

Page 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

desenvolvimento vs. operação

Page 6: 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

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)

Arquitetura da aplicação Arquitetura do sistema

Page 7: 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
Page 8: 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

Se a comunicação falhar, a aplicação falhará e todos

perdem.

Page 9: 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

Soluções?!?

Page 10: 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

Wikis, playbooks, chats, café…

Documentações

Page 11: 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

O principal problema das documentações de arquitetura

é que ninguém atualiza.

Page 12: 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

chef, puppet, ansible, vagrant, terraform, monit, god…

Ferramentas

Page 13: 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

Lembre-se: desenvolvedores estão focados em desenvolver.

E deveriam estar mesmo!

Page 14: 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

vagrant, terraform,

monit, god…

Page 15: 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

Muito importante e funciona, mas tem custo alto e ainda

opera por instrumentos.

Operation Engineer

Page 16: 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

Se boas práticas fossem fáceis de adotar a documentação

estaria em dia ;)

Page 17: 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

Arquiteturas executáveis

Page 18: 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

Linguagem de alto nível, que diferente de fluxogramas…

Page 19: 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

… pode ser interpretada para implantação e automação de

sistemas.

Page 20: 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

systems({ api: { image : "ruby", depends: [ "mysql" ], //... }, mysql: //...,});

Page 21: 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

systems({ api: { image : "ruby", depends: [ "mysql" ], ports : { http: "80/tcp" }, }, mysql: {ports: { data: "3306/tcp" }, },});

Page 22: 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

systems({ api: { image : "ruby", depends: [ "mysql" ], ports : { http: "80/tcp" }, http : { domains: [ "api.myapp.azk.dev" ] }, }, mysql: {ports: { data: "3306/tcp" }, },});

Page 23: 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

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" }, },});

Page 24: 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

A "documentação" da arquitetura se torna parte da solução, sendo

essencial na sua execução.

Page 25: 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

É resultado do fluxo de trabalho do desenvolvedor e do arquiteto

de sistemas.

Page 26: 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

fluxo de trabalho

Page 27: 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

fluxo de trabalho

arquitetura

Page 28: 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

AZK

Page 29: 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

Ferramenta open source para orquestração de ambientes

de desenvolvimento…

Page 30: 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

Configuração

DNS

Instalação

Monitoramento

Logs

Webservices

Dependências

AZKReceitas

Page 31: 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

…através de arquivos manifesto de alto nível.

Page 32: 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

É uma descrição sucinta dos componentes que formam a

arquitetura da aplicação.

Page 33: 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

Bem como da relação entre esses componentes e de que

forma eles são acessados.

Page 34: 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

Exemplificando:

Page 35: 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

small.io - Web (Rails) - Database (Mysql)

Page 36: 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

$ 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

Page 37: 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

// 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") }, },});

Page 38: 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

$ azk start!

Get images:- azukiapp/mysql- azukiapp/ruby!

Starting: - db- blog (instances: 3) (linked with: db)

Page 39: 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

E PRONTO!

Basta acessar http://blog.dev.azk e sua aplicação já esta rodando.

Page 40: 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

Apenas 3 passos simples

- Instalar o azk - $ azk init - $ azk start

Page 41: 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

Microservice

Page 42: 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

Um projeto ou aplicação, mesmo simples, pode ser visto como um

System of Systems (SoS).

Page 43: 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

Em outras palavras Microservice Architecture.

http://martinfowler.com/articles/microservices.html

Page 44: 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

small.io - Web - Database

Page 45: 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

big.com

- Front - Databases:

- Mysql - Redis

- Workers - API - Proxy payment - Facebook auth - etc…

Page 46: 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

"Ambientes podem ser complexos só não podem ser desordenados"

(@fnando)

Page 47: 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

Resumindo

Page 48: 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

A comunicação se dá por meio do manifesto e da

ferramenta.

Page 49: 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

Uma lingua franca é estabelecida para

comunicação do time.

Page 50: 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
Page 51: 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

Lembre-se: arquiteturas de aplicações e de sistemas devem

ser vivas e vividas no seu projeto.

Page 52: 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

Status do azk

Page 53: 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

Versão 0.6.1 estável disponível em http://azk.io

Page 54: 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

Para mac e linux, windows em breve.

Page 55: 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

Documentação

Hoje: apenas o README e exemplos. Mas temos mais a

caminho.

Page 56: 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

Github issues e e-mail.

Suporte

Page 57: 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

Éverton Ribeiro // @nuxlli [email protected]

!

Slides: bit.ly/weop_arquiteturas_executaveis