Slide 1

Slide 1 text

Defensive Software Delivery Práticas para evitar bugs em produção Victor Martinez Photo by Clay Banks on Unsplash

Slide 2

Slide 2 text

2 POR QUE ?

Slide 3

Slide 3 text

3 Mar calmo nunca fez bom marinheiro,

Slide 4

Slide 4 text

4 Mar calmo nunca fez bom marinheiro, mas experimente colocar um bug sério em produção

Slide 5

Slide 5 text

5 Mar calmo nunca fez bom marinheiro, mas experimente colocar um bug sério em produção para perceber

Slide 6

Slide 6 text

6 Mar calmo nunca fez bom marinheiro, mas experimente colocar um bug sério em produção para perceber como é bom andar de pedalinho na lagoa. - Martinez, Victor (2020)

Slide 7

Slide 7 text

Victor Martinez Dev @ Magalu vcrmartinez@gmail.com vcrmartinez.com vcrmartinez 7 Mestrando em Sistemas de Recomendação (UFBA)

Slide 8

Slide 8 text

APRENDIZADOS PESSOAIS DE COMO EVITAR PROBLEMAS EM PRODUÇÃO Victor Martinez Photo by Clay Banks on Unsplash

Slide 9

Slide 9 text

9 ! ESTA APRESENTAÇÃO TEM UM VIÉS PROVOCATIVO, PESSOAL E OPINATIVO.

Slide 10

Slide 10 text

10 ALGUNS PROBLEMAS EM PROJETOS DE SOFTWARE PROCESSOS FALHOS FALTA DE CONTEXTO COBERTURA DE TESTES DEPENDÊNCIAS EXTERNAS PRAZO CÓDIGO … ESCOPO

Slide 11

Slide 11 text

AMBIENTE & CÓDIGO & ARQUITETURA & CRONJOBS & PERFIS DE PROGRAMADOR & LET’S GO!

Slide 12

Slide 12 text

12 AMBIENTE DE DESENVOLVIMENTO Photo by Dan Burton on Unsplash

Slide 13

Slide 13 text

13 QUAIS SÃO AS SUAS PRÁTICAS DE ENTREGA? Photo by Dan Burton on Unsplash AMBIENTE DE DESENVOLVIMENTO

Slide 14

Slide 14 text

14 1AMBIENTE DE STAGING & PRODUÇÃO

Slide 15

Slide 15 text

15 2ROLLBACK FÁCIL

Slide 16

Slide 16 text

16 3TIMING DIFERENTE DE ENTREGA

Slide 17

Slide 17 text

17 4TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE

Slide 18

Slide 18 text

18 4TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE TESTE UNITÁRIOS INTEGRAÇÃO COMPORTAMENTO

Slide 19

Slide 19 text

19 5PULL REQUESTS PADRONIZADOS

Slide 20

Slide 20 text

20 5

Slide 21

Slide 21 text

21 6CODE REVIEW https://google.github.io/eng-practices/ review/

Slide 22

Slide 22 text

22 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE

Slide 23

Slide 23 text

23 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE ARGUMENTAÇÃO TÉCNICA

Slide 24

Slide 24 text

24 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE ARGUMENTAÇÃO TÉCNICA DESIGN

Slide 25

Slide 25 text

25 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE ARGUMENTAÇÃO TÉCNICA DESIGN COMPLEXIDADE

Slide 26

Slide 26 text

26 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE ARGUMENTAÇÃO TÉCNICA DESIGN COMPLEXIDADE NOMENCLATURA

Slide 27

Slide 27 text

27 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE ARGUMENTAÇÃO TÉCNICA DESIGN COMPLEXIDADE NOMENCLATURA FUNCIONALIDADE

Slide 28

Slide 28 text

28 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE ARGUMENTAÇÃO TÉCNICA DESIGN COMPLEXIDADE NOMENCLATURA FUNCIONALIDADE COMENTÁRIOS E DOCUMENTAÇÃO

Slide 29

Slide 29 text

29 6CODE REVIEW DEFINA UM LINTER / FORMATTER / STYLE GUIDE ARGUMENTAÇÃO TÉCNICA DESIGN COMPLEXIDADE NOMENCLATURA FUNCIONALIDADE COMENTÁRIOS E DOCUMENTAÇÃO TESTES

Slide 30

Slide 30 text

30 7CRITÉRIOS DE ACEITAÇÃO

Slide 31

Slide 31 text

31 8TESTES EM DUPLA

Slide 32

Slide 32 text

32 9PAIR PROGRAMMING

Slide 33

Slide 33 text

33 10FEATURE FLAG <3

Slide 34

Slide 34 text

34 11DEPLOY? - HORÁRIO - COMUNICAÇÃO - MONITORAMENTO

Slide 35

Slide 35 text

35 12CUIDADO COM MIGRAÇÃO DE BD.

Slide 36

Slide 36 text

36 CÓDIGO & ARQUITETURA Photo by Chris Ried on Unsplash

Slide 37

Slide 37 text

37 https://en.wikipedia.org/wiki/Defensive_programming CÓDIGO & ARQUITETURA Making the source code comprehensible – the source code should be readable and understandable so it is approved in a code audit. General quality – reducing the number of software bugs and problems. Making the software behave in a predictable manner despite unexpected inputs or user actions. UM POUCO DE PROGRAMAÇÃO DEFENSIVA & ARQUITETURA

Slide 38

Slide 38 text

38 PROGRAMAÇÃO DEFENSIVA É UM NOME BONITO PARA O FAMOSO “E SE …?”

Slide 39

Slide 39 text

39 ARQUITETURA DEFENSIVA https://martinfowler.com/bliki/CircuitBreaker.html CIRCUIT-BREAKER

Slide 40

Slide 40 text

40 https://martinfowler.com/bliki/CircuitBreaker.html CIRCUIT-BREAKER ● Quando as falhas alcançam um limiar o circuito abre e as chamadas subsequentes não são efetuadas. ● ● ARQUITETURA DEFENSIVA

Slide 41

Slide 41 text

41 https://martinfowler.com/bliki/CircuitBreaker.html CIRCUIT-BREAKER ● Quando as falhas alcançam um limiar o circuito abre e as chamadas subsequentes não são efetuadas. ● Protege contra uma gama de erros (e.g. conexão de rede). ● ARQUITETURA DEFENSIVA

Slide 42

Slide 42 text

42 https://martinfowler.com/bliki/CircuitBreaker.html CIRCUIT-BREAKER ● Quando as falhas alcançam um limiar o circuito abre e as chamadas subsequentes não são efetuadas. ● Protege contra uma gama de erros (e.g. conexão de rede). ● Nem todos os erros devem ser tratados pelo CB. ARQUITETURA DEFENSIVA

Slide 43

Slide 43 text

43 ● Você precisa que terceiros integrem com a sua API. PROXY API ARQUITETURA DEFENSIVA

Slide 44

Slide 44 text

44 ● Você precisa que terceiros integrem com a sua API. THIRD-PARTY 1 API SERVICE SISTEMA EVENTO PROXY API ARQUITETURA DEFENSIVA

Slide 45

Slide 45 text

45 ● Você precisa que terceiros integrem com a sua API. API THIRD-PARTY 1 SERVICE SISTEMA THIRD-PARTY 2 PROXY API ARQUITETURA DEFENSIVA

Slide 46

Slide 46 text

46 ● Você precisa que terceiros integrem com a sua API. API THIRD-PARTY 1 SERVICE SISTEMA THIRD-PARTY 2 MUDANÇAS PROXY API ARQUITETURA DEFENSIVA

Slide 47

Slide 47 text

47 ● Você precisa que terceiros integrem com a sua API. API THIRD-PARTY 1 SERVICE SISTEMA THIRD-PARTY 2 PROXY PROXY API ARQUITETURA DEFENSIVA

Slide 48

Slide 48 text

48 PROXY API ● Você precisa que terceiros integrem com a sua API. ● Vantagens ○ Escalabilidade. ○ Desacoplamento. ○ Facilita mudanças e canary testing. ○ Stateless. API THIRD-PARTY 1 SERVICE SISTEMA THIRD-PARTY 2 PROXY ARQUITETURA DEFENSIVA

Slide 49

Slide 49 text

49 PROXY API ● Você precisa que terceiros integrem com a sua API. ● Vantagens ○ Escalabilidade. ○ Desacoplamento. ○ Facilita mudanças e canary testing. ○ Stateless. ○ API aggregation. API THIRD-PARTY 1 SERVICE SISTEMA THIRD-PARTY 2 PROXY API SERVICE ARQUITETURA DEFENSIVA

Slide 50

Slide 50 text

50 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. ARQUITETURA DEFENSIVA

Slide 51

Slide 51 text

51 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● ● ● ● ● ARQUITETURA DEFENSIVA

Slide 52

Slide 52 text

52 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● ● ● ● ARQUITETURA DEFENSIVA

Slide 53

Slide 53 text

53 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● ● ● ARQUITETURA DEFENSIVA

Slide 54

Slide 54 text

54 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● ● ARQUITETURA DEFENSIVA

Slide 55

Slide 55 text

55 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● ARQUITETURA DEFENSIVA

Slide 56

Slide 56 text

56 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. ARQUITETURA DEFENSIVA

Slide 57

Slide 57 text

57 CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. https://vcrmartinez.com/pt/blog/2019/2019-05-18-Crian do_scripts_de_linha_de_comando_a_prova_de_balas/ ARQUITETURA DEFENSIVA

Slide 58

Slide 58 text

58 https://vcrmartinez.com/pt/blog/2019/2019-05-18-Crian do_scripts_de_linha_de_comando_a_prova_de_balas/ CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. DRY-RUN ARQUITETURA DEFENSIVA

Slide 59

Slide 59 text

59 https://vcrmartinez.com/pt/blog/2019/2019-05-18-Crian do_scripts_de_linha_de_comando_a_prova_de_balas/ CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. DRY-RUN LOG ARQUITETURA DEFENSIVA

Slide 60

Slide 60 text

60 https://vcrmartinez.com/pt/blog/2019/2019-05-18-Crian do_scripts_de_linha_de_comando_a_prova_de_balas/ CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. DRY-RUN LOG ROLLBACK ARQUITETURA DEFENSIVA

Slide 61

Slide 61 text

61 https://vcrmartinez.com/pt/blog/2019/2019-05-18-Crian do_scripts_de_linha_de_comando_a_prova_de_balas/ CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. DRY-RUN LOG ROLLBACK TMUX ARQUITETURA DEFENSIVA

Slide 62

Slide 62 text

62 https://vcrmartinez.com/pt/blog/2019/2019-05-18-Crian do_scripts_de_linha_de_comando_a_prova_de_balas/ CLI - Command Line Interface “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. DRY-RUN LOG ROLLBACK TMUX SELF-CHECK ARQUITETURA DEFENSIVA

Slide 63

Slide 63 text

63 https://vcrmartinez.com/pt/blog/2019/2019-05-18-Crian do_scripts_de_linha_de_comando_a_prova_de_balas/ “Pera que eu vou fazer um update aqui no banco e resolvo isso.” - Programador antes de fazer m**** em produção. Vantagens ● Passível de revisão. ● Mais fácil de ser reutilizado e mantido. ○ Dica: scriptland. ● Progresso e estimativa. ● Documentação. ● Mais fácil de ser testado. ● Paralelismo. DRY-RUN LOG ROLLBACK TMUX SELF-CHECK PROGRESS BAR ARQUITETURA DEFENSIVA CLI - Command Line Interface

Slide 64

Slide 64 text

64 KEEP THE INTERFACE PROGRAMAÇÃO DEFENSIVA

Slide 65

Slide 65 text

65 PROGRAMAÇÃO DEFENSIVA KEEP THE INTERFACE

Slide 66

Slide 66 text

66 PROGRAMAÇÃO DEFENSIVA USE INTERFACES & FAVOREÇA COMPOSIÇÃO

Slide 67

Slide 67 text

67 PROGRAMAÇÃO DEFENSIVA USE INTERFACES & FAVOREÇA COMPOSIÇÃO

Slide 68

Slide 68 text

68 PROGRAMAÇÃO DEFENSIVA USE INTERFACES & FAVOREÇA COMPOSIÇÃO

Slide 69

Slide 69 text

69 PROGRAMAÇÃO DEFENSIVA CUIDADO COM A MUTABILIDADE

Slide 70

Slide 70 text

70 PROGRAMAÇÃO DEFENSIVA CUIDADO COM A MUTABILIDADE https://web.mit.edu/6.005/www/fa15/classes/09-immutability/

Slide 71

Slide 71 text

71 PROGRAMAÇÃO DEFENSIVA CUIDADO COM A MUTABILIDADE https://web.mit.edu/6.005/www/fa15/classes/09-immutability/ ❌ ✅

Slide 72

Slide 72 text

72 PROGRAMAÇÃO DEFENSIVA CUIDADO COM A MUTABILIDADE https://web.mit.edu/6.005/www/fa15/classes/09-immutability/ ❌ ✅ ESTADO APENAS QUANDO NECESSÁRIO EDITAR CRIAR LISTA EVITE MODIFICAR OBJETOS PROPRIEDADES READ-ONLY

Slide 73

Slide 73 text

73 PROGRAMAÇÃO DEFENSIVA IDEMPOTÊNCIA SE ALGUÉM EXECUTAR JOB COMMAND PROCESSO REQUEST ... MAIS DE UMA VEZ ALTERA O RESULTADO ALÉM DO RESULTADO INICIAL?

Slide 74

Slide 74 text

74 PROGRAMAÇÃO DEFENSIVA IDEMPOTÊNCIA SE ALGUÉM EXECUTAR JOB COMMAND PROCESSO REQUEST ... MAIS DE UMA VEZ ALTERA O RESULTADO ALÉM DO RESULTADO INICIAL? PENSE EM MÁQUINA DE ESTADOS

Slide 75

Slide 75 text

75 PROGRAMAÇÃO DEFENSIVA ● Evite lógicas mirabolantes ● Cuidado com overengineering ● Nomes significativos ● Complexidade Ciclomática ● Tipagem, se possível ● Cuidado com estado ● Imutabilidade sempre que puder KISS: KEEP IT SIMPLE, STUPID

Slide 76

Slide 76 text

76

Slide 77

Slide 77 text

77 PRECISAMOS FALAR SOBRE CRONJOBS

Slide 78

Slide 78 text

78 PRECISAMOS FALAR SOBRE CRONJOBS */5 * * * * “At every 5th minute.”

Slide 79

Slide 79 text

79 P C Produtor Consumidor Fila Banco de Dados Serviço Externo */5 * * * *

Slide 80

Slide 80 text

80 P C Produtor Consumidor Fila Banco de Dados Serviço Externo 1 */5 * * * *

Slide 81

Slide 81 text

81 P C Produtor Consumidor Fila Banco de Dados Serviço Externo 1 2 */5 * * * *

Slide 82

Slide 82 text

82 P C Produtor Consumidor Fila Banco de Dados Serviço Externo 1 2 3 */5 * * * *

Slide 83

Slide 83 text

83 P C Produtor Consumidor Fila Banco de Dados Serviço Externo 1 2 3 4 */5 * * * *

Slide 84

Slide 84 text

84 P C Produtor Consumidor Fila Banco de Dados Serviço Externo 1 2 3 4 5 */5 * * * *

Slide 85

Slide 85 text

85 P C VAMOS TENTAR ENCONTRAR POSSÍVEIS PONTOS DE FALHA…

Slide 86

Slide 86 text

86 P C SELECT *

Slide 87

Slide 87 text

87 P C MEMORY ERROR MEMORY ERROR

Slide 88

Slide 88 text

88 P C MUDAR O CRON

Slide 89

Slide 89 text

89 P C MUDANÇA DE FILA MUDANÇA DE FILA

Slide 90

Slide 90 text

90 P C CONEXÃO COM BD CONEXÃO COM BD

Slide 91

Slide 91 text

91 P C EXECUTAR NOVAMENTE?

Slide 92

Slide 92 text

92 P C FILA DOWN?

Slide 93

Slide 93 text

93 P C LATÊNCIA LATÊNCIA

Slide 94

Slide 94 text

94 P C CONSUMO + PROCESSAMENTO > TEMPO DE PRODUÇÃO

Slide 95

Slide 95 text

95 P C TRANSACTIONS

Slide 96

Slide 96 text

96 P C LONG QUEUE?

Slide 97

Slide 97 text

97 P C OLDEST UNACKED MESSAGE AGE

Slide 98

Slide 98 text

98 P C ALTO TEMPO DE PROCESSAMENTO

Slide 99

Slide 99 text

99 P C ERRO DURANTE PROCESSAMENTO

Slide 100

Slide 100 text

100 P C SCHEMA MUDOU

Slide 101

Slide 101 text

101 P C ERROR

Slide 102

Slide 102 text

102 P C TIMEOUT

Slide 103

Slide 103 text

103 P C RESPOSTA INESPERADA

Slide 104

Slide 104 text

104 P C EXCEPTION

Slide 105

Slide 105 text

105 P C ATUALIZAÇÃO ERRADA

Slide 106

Slide 106 text

106 P C

Slide 107

Slide 107 text

107 P C ATUALIZAÇÃO ERRADA EXCEPTION ERROR RESPOSTA INESPERADA TIMEOUT ALTO TEMPO DE PROCESSAMENTO ERRO DURANTE PROCESSAMENTO OLDEST UNACKED MESSAGE AGE MEMORY ERROR LONG QUEUE? FILA DOWN? CONSUMO + PROCESSAMENTO > TEMPO DE PRODUÇÃO LATÊNCIA MUDANÇA DE FILA LATÊNCIA SCHEMA MUDOU MUDANÇA DE FILA MUDAR O CRON EXECUTAR NOVAMENTE? MEMORY ERROR CONEXÃO COM BD CONEXÃO COM BD SELECT *

Slide 108

Slide 108 text

108 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● ● ● ● ● ● ●

Slide 109

Slide 109 text

109 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● FLUXO MUITO MIRABOLANTE? DESCONFIE… ● ● ● ● ● ●

Slide 110

Slide 110 text

110 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● FLUXO MUITO MIRABOLANTE? DESCONFIE… ● PRECISO TRATAR TODOS OS ERROS POSSÍVEIS? ● ● ● ● ●

Slide 111

Slide 111 text

111 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● FLUXO MUITO MIRABOLANTE? DESCONFIE… ● PRECISO TRATAR TODOS OS ERROS POSSÍVEIS? ● COMO RECUPERAR & REPROCESSAR ? ● ● ● ●

Slide 112

Slide 112 text

112 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● FLUXO MUITO MIRABOLANTE? DESCONFIE… ● PRECISO TRATAR TODOS OS ERROS POSSÍVEIS? ● COMO RECUPERAR & REPROCESSAR ? ● MONITORAMENTO & OBSERVABILIDADE ● ● ●

Slide 113

Slide 113 text

113 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● FLUXO MUITO MIRABOLANTE? DESCONFIE… ● PRECISO TRATAR TODOS OS ERROS POSSÍVEIS? ● COMO RECUPERAR & REPROCESSAR ? ● MONITORAMENTO & OBSERVABILIDADE ● CONSIDERE MÁQUINA DE ESTADOS ● ●

Slide 114

Slide 114 text

114 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● FLUXO MUITO MIRABOLANTE? DESCONFIE… ● PRECISO TRATAR TODOS OS ERROS POSSÍVEIS? ● COMO RECUPERAR & REPROCESSAR ? ● MONITORAMENTO & OBSERVABILIDADE ● CONSIDERE MÁQUINA DE ESTADOS ● JOBS “ATÔMICOS” & FILAS MENORES ●

Slide 115

Slide 115 text

115 NÃO DEU TEMPO DE ANOTAR… ● ERROS VÃO SEMPRE ACONTECER ● FLUXO MUITO MIRABOLANTE? DESCONFIE… ● PRECISO TRATAR TODOS OS ERROS POSSÍVEIS? ● COMO RECUPERAR & REPROCESSAR ? ● MONITORAMENTO & OBSERVABILIDADE ● CONSIDERE MÁQUINA DE ESTADOS ● JOBS “ATÔMICOS” & FILAS MENORES ● RETRY & EXPONENTIAL BACKOFF

Slide 116

Slide 116 text

Victor Martinez Dev @ Magalu vcrmartinez@gmail.com vcrmartinez.com vcrmartinez 116 Mestrando em Sistemas de Recomendação (UFBA)