Arquitetura executável: Documentando e automatizando a comunicação da equipe de desenvolvimento...

Preview:

Citation preview

Arquiteturas Executáveis

ÉVERTON RIBEIRO

@nuxllimanutenção, operação,

desenvolvimento, pesquisa e

empreendimento

D vs O

desenvolvimento vs. operação

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

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

perdem.

Soluções?!?

Wikis, playbooks, chats, café…

Documentações

O principal problema das documentações de arquitetura

é que ninguém atualiza.

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

Ferramentas

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

E deveriam estar mesmo!

vagrant, terraform,

monit, god…

Muito importante e funciona, mas tem custo alto e ainda

opera por instrumentos.

Operation Engineer

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

Monitoramento

Logs

Webservices

Dependências

AZKReceitas

…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.

Github issues e e-mail.

Suporte

Éverton Ribeiro // @nuxlli everton@azukiapp.com

!

Slides: bit.ly/weop_arquiteturas_executaveis

Recommended