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

Pipeline as Code no Nubank - 2019

Pipeline as Code no Nubank - 2019

A Portuguese Talk about how Nubank deals with more than 400+ services and 400+ Engineers for building pipelines from Definition.

Other Decks in Technology

Transcript

  1. Infrastructure as Code (IaC) Is the process of managing and

    provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools. Wikipedia
  2. Centralizado Repositório no Github Rastreável Quando uma mudança ocorre sabemos

    quando ele foi aplicada Reproduzivel Através do versionamento. Processado Configs para diferentes finalidades no S3 (AWS) Fácil Manutenção Reverts Novas configs Combinar configs existentes Definition
  3. {:name :heimdall :environments {:staging #nu/prototypes-for [:staging :sharded+global] :prod #nu/prototypes-for [:prod

    :sharded+global]} :pipelines #{{:type :clojure-service :test-frameworks #{:clojure-test} :cdc-test-frameworks #{:sachem} :prod {:promotion :automatic}}}} Pipeline Definition
  4. (defn- build [service {:keys [prefix repo branch whitelist image-name-override environment-variables

    approval] :as options}] ...) (defn publish [service {:keys [prefix repo branch service? Tag-latest] :as options}] ...) (defn- dockerfiles [service & {:keys [folder] :as options}] [(build service options) (publish service options)]) (def dockerfiles-pipelines (flatten [(dockerfiles "alertmanager" :tag-latest true) … (dockerfiles "boot" :prefix "nudev" :folder "dev/boot")])) Docker Examples
  5. Principais Dificuldades DRY RUN Temos dificuldades em testar que os

    jobs funcionarão. PRE FLIGHT CHECK Validar as configurações antes de aplicar: (dependências entre pipelines, source-code, etc) TREINAMENTO Temos boas docs, mas ocasionalmente precisamos treinar novos Engenheiros. GARGALO Os squads precisam do nosso Aprove na DSL. Isso demanda entendimento das necessidade deles. RESTRIÇÃO DE CI Não são todos CI's que suportam configurações centralizadas READABILITY É necessário balancear reutilização com duplicação de Código.
  6. Principais Vantagens MANUTENABILIDADE Refactors, Fixes de Segurança, Migrações, Evoluções e

    Padronização. COMPOSIÇÃO Compomos funções que podem ser reutilizadas em vários contextos e finalidades TESTE UNITÁRIO Testes nos ajudam a manter as pipelines com as estruturas desejadas. RASTREABILIDADE Podemos identificar qual alteração causou um problema ou mudança de comportamento ESCALA Dá poder de acompanhar o crescimento em Engs, Serviços e Países. REPRODUTIBILIDADE Podemos usar a mesma versão para reproduzir um comportamento estranho