Slide 1

Slide 1 text

Pipeline de APIs para o século XXI

Slide 2

Slide 2 text

Hello! I am Marcelo Marinho Development Specialist @luizalabs 2

Slide 3

Slide 3 text

Hello! I am Cláudio de Oliveira Tech Lead API Team @luizalabs 3

Slide 4

Slide 4 text

Agenda 4 ● Fundamentação ○ OpenAPI ○ git ○ GitOPS ● CI ○ Argo Workflow ○ Argo Events ● CD ○ Argo CD

Slide 5

Slide 5 text

OpenAPI Tudo começa aqui!!! 5

Slide 6

Slide 6 text

“ The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic 6 https://spec.openapis.org/oas/latest.html

Slide 7

Slide 7 text

7 A idéia principal é fazer com que as outras pessoas possam usar suas funções providas por um serviço sem a necessidade de entender nos detalhes a implementação

Slide 8

Slide 8 text

Estabelecimento de contrato Quando um artefato OpenAPI é produzido é estabelecido um contrato, clientes se “espelham” no contrato para implementar suas aplicações 8

Slide 9

Slide 9 text

Automação Alguém faz isso pra você!!! 9

Slide 10

Slide 10 text

Automação 10 Retirar processos manuais e prover velocidade e consistência.

Slide 11

Slide 11 text

11 https://www.manning.com/books/gitops-and-kubernetes

Slide 12

Slide 12 text

12 https://www.manning.com/books/gitops-and-kubernetes

Slide 13

Slide 13 text

GitOps Guarde suas coisas!!! 13

Slide 14

Slide 14 text

14 https://www.manning.com/books/gitops-and-kubernetes

Slide 15

Slide 15 text

15 https://www.manning.com/books/gitops-and-kubernetes

Slide 16

Slide 16 text

16 https://www.manning.com/books/gitops-and-kubernetes

Slide 17

Slide 17 text

Ferramentas Let’s do it!! 17

Slide 18

Slide 18 text

1. Fluxo de aprovação de contratos

Slide 19

Slide 19 text

Fluxo de Aprovação Repósitorio de APIs Criação de um repositório central com artefatos de OpenAPIs Git Ferramenta conhecida no ecossistema de desenvolvedores, é possível armazenar um determinado estado em uma fatia de tempo Pull Requests Conhecido padrão no ambiente de desenvolvedores, intenção de tornar um código parte da companhia, no nosso caso APIs 19 Validações automáticas *** Algumas ferramentas podem auxiliar o processo de validação de um artefato OpenAPI

Slide 20

Slide 20 text

Spectral 20

Slide 21

Slide 21 text

Spectral 21

Slide 22

Slide 22 text

22 Fluxo de Aprovação

Slide 23

Slide 23 text

Prática de Pull Requests Descentralização de responsabilidades Times com responsabilidades no contrato que eles trabalham em geral aumenta a qualidade do artefato produzido Compartilhamento da informação Em geral outras pessoas revisando aumenta a distribuição do conhecimento das APIs da companhia Prática recorrente Essa prática já é comum aos desenvolvedores não é necessário a adição de uma prática/ferramenta desconhecida 23 Validações automáticas Procure utilizar processos automatizados de validação de contrato, em geral a consistência é maior e elimina a possibilidade de erros humanos

Slide 24

Slide 24 text

Catalogo Torne suas APIs “acháveis” 24

Slide 25

Slide 25 text

25 A idéia principal aqui é que sua API seja disponibilizada em um catálogo da companhia para que outros times consigam consultar e encontrar serviços já disponibilizados

Slide 26

Slide 26 text

26 É importante que o serviço tenha algumas informações como estágio de desenvolvimento, time responsável e definição, no nosso caso OpenAPI

Slide 27

Slide 27 text

27 Sempre que possível “incorpore” o fluxo de atualização de documentação no seu fluxo de pipeline de CI. Dica https://www.youtube.com/watch?v=aIURaocR5D8

Slide 28

Slide 28 text

28

Slide 29

Slide 29 text

29

Slide 30

Slide 30 text

Documentação OpenAPI com “esteroídes” 30

Slide 31

Slide 31 text

31 O OpenAPI define as operações de uma API, porém precisamos de uma ferramenta que nos ajude a deixar a documentação mais fácil de ser lida

Slide 32

Slide 32 text

32

Slide 33

Slide 33 text

33

Slide 34

Slide 34 text

Mocking Comece a “enxergar” a implementação da sua API 34

Slide 35

Slide 35 text

35 Durante a fase de prototipação da sua API a criação de mocks pode permitir que você disponibilize suas APIs para seus consumidores de maneira fictícia e criar um design colaborativo permitindo que outras pessoas possam dar “feedbacks” na construção

Slide 36

Slide 36 text

36 O OpenAPI tem uma seção de examples que pode ser utilizado para criação/geração de mocks automatizados, além de facilitar o consumo da API deixando ela mais amigável

Slide 37

Slide 37 text

37

Slide 38

Slide 38 text

38

Slide 39

Slide 39 text

Testing Validando o comportamento da API 39

Slide 40

Slide 40 text

40 A partir de um OpenAPI bem documentado, com a seção de examples implementada é possível gerar coleções de postman validando o comportamento da sua API, isso pode ser um bom início para testes de contrato

Slide 41

Slide 41 text

41

Slide 42

Slide 42 text

42

Slide 43

Slide 43 text

Pipelines 43

Slide 44

Slide 44 text

44

Slide 45

Slide 45 text

45

Slide 46

Slide 46 text

Production Pipeline 46 1 3 5 2 Fluxo de aprovação de contratos 4 Criação de documentação da API em formato intuitivo Criaçao de Pull Requests Criação de portal de catálogo de serviços Instalação da API em ambiente de execução API Gateway

Slide 47

Slide 47 text

47

Slide 48

Slide 48 text

Prototyping Pipeline 48 1 3 5 4 2 Fluxo de aprovação de contratos Criação de documentação da API em formato intuitivo Criação de artefatos de tests (postman) Criação de portal de catálogo de serviços Criação de Mocks quando API está em estágios iniciais

Slide 49

Slide 49 text

49

Slide 50

Slide 50 text

50

Slide 51

Slide 51 text

Próximos passos 51 ● Melhores legibilidade dos logs do WF ● Criar newman-operator para validar os testes criados no flow Prototyping (in progress) ● Adicionar trigger no pipeline de prototyping

Slide 52

Slide 52 text

github 52 ● https://github.com/apirator/workflow-api-docs ● https://github.com/apirator/workflow-manifests ● https://github.com/apirator/workflow-definitions ● https://github.com/apirator/workflow-apps

Slide 53

Slide 53 text

Contatos 53 Cláudio de Oliveira Tech Lead @claudioed Marcelo Marinho Especialista em Desenvolvimento https://www.linkedin.com/in/marcelo-marinho-4b728928/

Slide 54

Slide 54 text

54