Upload
weop-the-operations-summit
View
29
Download
0
Embed Size (px)
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)
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