Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Arquiteturas Executáveis - WeOp Summit

Arquiteturas Executáveis - WeOp Summit

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 e 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 falamos "Arquiteturas Executáveis" 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.

Everton Ribeiro

November 13, 2014
Tweet

More Decks by Everton Ribeiro

Other Decks in Programming

Transcript

  1. 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
  2. Especializado em navegar entre os dois lados do time. É

    importante e funciona… Operation Engineer
  3. systems({ api: { image : "ruby", depends: [ "mysql" ],

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

    ports : { http: "80/tcp" }, http : { domains: [ "api.myapp.azk.dev" ] }, }, mysql: { ports: { data: "3306/tcp" }, }, });
  5. 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" }, }, });
  6. AZK

  7. $ 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
  8. // 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") }, }, });
  9. $ azk start ! Get images: - azukiapp/mysql - azukiapp/ruby

    ! Starting: - db - blog (instances: 3) (linked with: db)
  10. big.com - Front - Databases: - Mysql - Redis -

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