Slide 1

Slide 1 text

Arquitetura Executável ÉVERTON RIBEIRO

Slide 2

Slide 2 text

@nuxlli manutenção, operação, desenvolvimento, pesquisa e empreendimento

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

A batalha!

Slide 5

Slide 5 text

desenvolvimento vs. operação

Slide 6

Slide 6 text

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)

Slide 7

Slide 7 text

Arquitetura da aplicação

Slide 8

Slide 8 text

Arquitetura do sistema

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Soluções?!?

Slide 12

Slide 12 text

Wikis, playbooks, chats, café… Documentação

Slide 13

Slide 13 text

O principal problema das documentações de arquitetura é que ninguém atualiza.

Slide 14

Slide 14 text

Chef, puppet, ansible, vagrant, terraform, monit, god… Ferramentas

Slide 15

Slide 15 text

Devem ser parte da solução, mas são apenas partes mesmo.

Slide 16

Slide 16 text

Lembre-se: desenvolvedores estão focados em desenvolver. E deveriam estar mesmo!

Slide 17

Slide 17 text

Vagrant, terraform, monit, god…

Slide 18

Slide 18 text

si, pero no mucho Boas práticas

Slide 19

Slide 19 text

Se boas práticas fossem fáceis de adotar a documentação estaria em dia ;)

Slide 20

Slide 20 text

Arquitetura executável

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

A "documentação" da arquitetura se torna parte da solução, sendo essencial na sua execução.

Slide 25

Slide 25 text

É resultado do fluxo de trabalho do desenvolvedor e do arquiteto de sistemas.

Slide 26

Slide 26 text

fluxo de trabalho

Slide 27

Slide 27 text

fluxo de trabalho arquitetura

Slide 28

Slide 28 text

AZK

Slide 29

Slide 29 text

Ferramenta open source para orquestração de ambientes de desenvolvimento…

Slide 30

Slide 30 text

Configuração DNS Instalação Monitoramento Logs Webservices Dependências AZK Receitas

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

É uma descrição sucinta dos componentes que formam a arquitetura da aplicação.

Slide 33

Slide 33 text

Bem como da relação entre esses componentes e de que forma eles são acessados.

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Exemplificando:

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

$ 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

Slide 38

Slide 38 text

// Azkfile.js (JavaScript DSL) systems({ blog: { depends : [ "mysqldb" ], image : "azukiapp/ruby", provision : [ "bundle install vendor/bundler" ], command : "rackup -s thin", mounts : { "/azk/#{manifest.dir}": path(".") }, scalable : { default: 3 }, http: { domains: [ "#{system.name}.#{azk.defaul_domain}" ], }, env : [ RUBY_ENV: "dev" ], }, mysqldb: { image : "azukiapp/mysql", mounts: { "/data/db": persistent("data") }, }, });

Slide 39

Slide 39 text

$ azk start ! Get images: - azukiapp/mysql - azukiapp/ruby ! Starting: - db - blog (instances: 3) (linked with: db)

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

Apenas 3 passos simles: - Instalar o azk - $ azk init - $ azk start

Slide 42

Slide 42 text

Sistemas

Slide 43

Slide 43 text

Um projeto ou aplicação, mesmo simples, pode ser visto como um System of Systems (SoS).

Slide 44

Slide 44 text

Em outras palavras um arquitetura de microsistemas.

Slide 45

Slide 45 text

small.io - Web - Database

Slide 46

Slide 46 text

big.com - Front - Databases: - Mysql - Redis - Workers - API - Proxy payment - Facebook auth - etc…

Slide 47

Slide 47 text

"Ambientes podem ser complexos só não podem ser desordenados" (@fnando)

Slide 48

Slide 48 text

Resumindo

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

Uma lingua franca é estabelecida para comunicação do time.

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

Lembre-se: arquiteturas de aplicações e de sistemas devem vivas e vividas no seu projeto.

Slide 53

Slide 53 text

Status do azk

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

Para mac e linux, windows em breve.

Slide 56

Slide 56 text

Documentação Hoje: apenas o README e exemplos. Temos mais a caminho.

Slide 57

Slide 57 text

Github issues, Hipchat e e-mail. Suporte

Slide 58

Slide 58 text

Éverton Ribeiro // @nuxlli [email protected] ! Slides: bit.ly/gurusp35_arquitetura_executavel