technology radar vol - assets.thoughtworks.com · radar vol.19 nossas ideias sobre tecnologias e...

29
TECHNOLOGY RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro thoughtworks.com/pt/radar #TWTechRadar

Upload: vunhi

Post on 04-Jan-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

TECHNOLOGY RADAR VOL19

Nossas ideias sobre tecnologias e tendecircncias que

estatildeo moldando o futuro

thoughtworkscomptradar

TWTechRadar

CONTRIBUICcedilOtildeESO Technology Radar eacute produzido pelo Conselho Consultivo de Tecnologia da ThoughtWorks composto por

Esta ediccedilatildeo do Technology Radar da ThoughtWorks teve como base um encontro do Conselho Consultivo de Tecnologia que se reuniu em

Atlanta em outubro de 2018

Rebecca Parsons (Diretora de Tecnologia) | Martin Fowler (Cientista-chefe) | Bharani Subramaniam | Camilla Crispim | Erik Doernenburg

Evan Bottcher | Fausto de la Torre | Hao Xu | Ian Cartwright | James Lewis | Jonny LeRoy

Ketan Padegaonkar | Lakshminarasimhan Sudarshan | Marco Valtas | Mike Mason | Neal Ford

Ni Wang | Rachel Laycock | Scott Shaw | Shangqi Liu | Zhamak Dehghani

Traduccedilatildeo Alexey Villas Bocircas Camilla Crispim Marco Valtas Paula Ribas e Ricardo Cavalcanti

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 3

O QUE HAacute DE NOVOEstes satildeo os temas em destaque nessa ediccedilatildeo

NUVENS GRUDENTAS

Os provedores de nuvem sabem que estatildeo em um mercado altamente competitivo e que para terem sucesso precisam adquirir e reter clientes de longo prazo Assim para se manterem diferenciados correm para adicionar novas funcionalidades e os vemos atingindo uma paridade de recursos o que se reflete no fato de colocarmos AWS Google Cloud Platform e Azure no anel Experimente nesta ediccedilatildeo No entanto uma vez que conquistam os clientes esses provedores tendem a criar uma relaccedilatildeo o mais ldquogrudentardquo possiacutevel com seus clientes para desencorajar a migraccedilatildeo para outro provedor Frequentemente isso se manifesta em uma forte dependecircncia da sua suiacutete especiacutefica de serviccedilos e ferramentas oferecendo uma melhor experiecircncia de desenvolvimento desde que os clientes permaneccedilam com eles Algumas empresas satildeo surpreendidas quando esse grude se torna aparente geralmente ao optar por mover partes ou todas as suas cargas de trabalho para outra nuvem ou ao descobrir que o uso da nuvem e seu custo estatildeo fora de controle Encorajamos nossos clientes a usar a teacutecnica de custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural para monitorar o custo de operaccedilatildeo que eacute um indicador de dependecircncia de determinado provedor ou Kubernetes e contecircineres para aumentar a portabilidade da carga de trabalho e reduzir o custo de mudanccedila para outra nuvem por meio de infraestrutura como coacutedigo Nesta ediccedilatildeo do Radar tambeacutem apresentamos duas novas ferramentas de automaccedilatildeo de infraestrutura em nuvem Terragrunt e Pulumi Apesar de apoiarmos que se considere dependecircncia ao avaliar novas ofertas do seu provedor de nuvem advertimos contra o uso geneacuterico da nuvem Na nossa experiecircncia o custo de criar e manter camadas de abstraccedilatildeo agnoacutesticas de um provedor especiacutefico de nuvem supera o custo de saiacuteda de um provedor especiacutefico

ANTIPADROtildeES CORPORATIVOS PERSISTENTES

Natildeo importa a velocidade de mudanccedila da tecnologia as empresas ainda encontram maneiras de reimplementar antipadrotildees do passado Muitos de nossos registros no anel Evite denunciam um lobo velho disfarccedilado de ovelha nova comportamento de Enterprise Service Bus (ESB) implementado em plataformas de fluxo de eventos mdash Recriando antipadrotildees ESB com Kafka Arquitetura de microsserviccedilos em camadas Pacotes com fome de dados Gateways de API excessivamente ambiciosos Plataformas de baixo coacutedigo e outras praacuteticas antigas nocivas O problema fundamental como sempre eacute o equiliacutebrio entre isolamento e acoplamento isolamos as coisas para tornaacute-las gerenciaacuteveis a partir de uma perspectiva teacutecnica mas posteriormente precisamos adicionar coordenaccedilatildeo para tornaacute-las uacuteteis na resoluccedilatildeo de problemas de negoacutecios resultando em alguma forma de acoplamento Dessa forma esses velhos padrotildees continuam reemergindo Novas arquiteturas e ferramentas fornecem meios apropriados para resolver esses problemas mas isso requer um esforccedilo deliberado para entender como usaacute-las apropriadamente e natildeo apenas voltar a reimplementar padrotildees antigos com novas tecnologias

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 4

O QUE HAacute DE NOVOEstes satildeo os temas em destaque nessa ediccedilatildeo

PRAacuteTICAS PERENES DE ENGENHARIA

Um efeito colateral do ritmo acelerado da inovaccedilatildeo tecnoloacutegica eacute um padratildeo repetitivo de expansatildeo e contraccedilatildeo Quando surge uma nova inovaccedilatildeo que muda fundamentalmente a maneira como pensamos sobre algum aspecto do desenvolvimento de software a induacutestria corre para adotar conteinerizaccedilatildeo front-ends reativos aprendizagem de maacutequina e assim por diante Essa eacute a fase de expansatildeo No entanto para tornar esse elemento novo realmente eficaz eacute necessaacuterio descobrir como aplicar praacuteticas de engenharia perenes entrega contiacutenua testes colaboraccedilatildeo e assim por diante A fase de contraccedilatildeo ocorre quando determinamos como usar esse novo recurso de forma eficaz criando uma base firme para permitir a proacutexima expansatildeo explosiva Durante essa fase aprendemos a aplicar praacuteticas como testes automatizados abrangentes e automatizaccedilatildeo de sequecircncias de etapas recorrentes dentro do contexto da nova tecnologia Frequentemente isso caminha de matildeos dadas com a criaccedilatildeo de novas ferramentas de desenvolvimento Embora possa parecer que a introduccedilatildeo de uma nova inovaccedilatildeo tecnoloacutegica por si soacute avanccedila nossa induacutestria eacute a combinaccedilatildeo dessa inovaccedilatildeo com praacuteticas de engenharia perenes que sustenta nosso progresso contiacutenuo

RITMO = DISTAcircNCIA TEMPO

Nossos temas geralmente destacam um padratildeo que observamos em vaacuterias entradas no Radar atual mas este se refere a todas as entradas durante a vida uacutetil do Radar Percebemos (e fizemos algumas pesquisas para comprovar) que o tempo que nossos blips permanecem no Radar estaacute caindo Quando comeccedilamos o Radar uma deacutecada atraacutes o padratildeo para as entradas era permanecer por duas ediccedilotildees do Radar (aproximadamente um ano) sem nenhum movimento antes que elas desaparecessem automaticamente No entanto como indicado pela foacutermula no tiacutetulo deste tema ritmo = distacircncia sobre tempo a mudanccedila no ecossistema de desenvolvimento de software continua a acelerar O tempo permanece constante (ainda criamos o Radar duas vezes por ano) mas a distacircncia percorrida em termos de inovaccedilatildeo tecnoloacutegica aumentou consideravelmente fornecendo ainda mais evidecircncias ao que eacute oacutebvio para qualquer pessoa observadora o ritmo da mudanccedila tecnoloacutegica continua a aumentar Vemos o aumento do ritmo em todos os nossos quadrantes do Radar e tambeacutem no apetite de nossos clientes para adotar novas e diversas opccedilotildees tecnoloacutegicas Consequentemente modificamos nosso padratildeo tradicional para este Radar agora cada entrada deve aparecer no Radar com base em seu meacuterito atualmdashnatildeo permitimos mais que elas permaneccedilam por padratildeo Fizemos essa mudanccedila apoacutes uma anaacutelise cuidadosa sentindo que isso nos permite capturar melhor o ritmo freneacutetico de mudanccedila sempre presente no ecossistema de tecnologia

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 5

SOBRE O RADARThoughtWorkers satildeo pessoas apaixonadas por tecnologia Noacutes desenvolvemos pesquisamos testamos contribuiacutemos com coacutedigo livre escrevemos e visamos a sua constante melhoria mdash para todas as pessoas Nossa missatildeo eacute liderar e promover a excelecircncia de software e revolucionar a induacutestria de TI Noacutes criamos e compartilhamos o Technology Radar da ThoughtWorks para apoiar essa missatildeo O Conselho Consultivo de Tecnologia (Technology Advisory Board ou TAB) um grupo de liacutederes experientes em tecnologia da ThoughtWorks eacute responsaacutevel por criar o Radar O grupo se reuacutene regularmente para discutir a estrateacutegia global de tecnologia para a empresa e as tendecircncias tecnoloacutegicas que impactam significativamente a nossa induacutestria

RADAR EM UM RELANCE

Itens novos ou que sofreram alteraccedilotildees significativas desde o uacuteltimo Radar satildeo representados como triacircngulos enquanto os itens que natildeo mudaram satildeo representados como ciacuterculos

Nosso Radar eacute um olhar para o futuro Para abrir espaccedilo para novos itens apagamos itens em que natildeo houve mudanccedila recentemente o que natildeo eacute uma representaccedilatildeo de seu valor mas uma soluccedilatildeo para nossa limitaccedilatildeo de espaccedilo

NOVO OU MODIFICADO

SEM MODIFICACcedilAtildeO

EVITEProssiga com cautela

4AVALIEVale a pena explorar com o objetivo de compreender como isso afetaraacute sua empresa

3

EXPERIMENTEVale a pena ir atraacutes Eacute importante entender como desenvolver essa capacidade As empresas devem experimentar esta tecnologia em um projeto que possa lidar com o risco

2ADOTEAcreditamos firmemente que a induacutestria deveria adotar esses itens Noacutes os usamos quando satildeo apropriados em nossos projetos

1

O Radar captura o resultado das discussotildees do TAB em um formato que procura oferecer valor a uma ampla gama de pessoas interessadas de CTOs a pessoas que desenvolvem software O conteuacutedo eacute concebido para ser um resumo conciso

Noacutes encorajamos vocecirc a explorar essas tecnologias para obter mais detalhes O Radar eacute graacutefico por natureza agrupando os itens em teacutecnicas ferramentas plataformas e linguagens amp frameworks Quando itens do Radar puderem ser classificados em mais de um quadrante escolhemos aquele que parece ser mais adequado Aleacutem disso agrupamos esses itens em quatro aneacuteis para refletir a nossa posiccedilatildeo atual em relaccedilatildeo a eles

Para mais informaccedilotildees sobre o Radar veja thoughtworkscomptradarfaq

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

96 108

421 3

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 6

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

O RADARTEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 7

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

O RADAR

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 2: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

CONTRIBUICcedilOtildeESO Technology Radar eacute produzido pelo Conselho Consultivo de Tecnologia da ThoughtWorks composto por

Esta ediccedilatildeo do Technology Radar da ThoughtWorks teve como base um encontro do Conselho Consultivo de Tecnologia que se reuniu em

Atlanta em outubro de 2018

Rebecca Parsons (Diretora de Tecnologia) | Martin Fowler (Cientista-chefe) | Bharani Subramaniam | Camilla Crispim | Erik Doernenburg

Evan Bottcher | Fausto de la Torre | Hao Xu | Ian Cartwright | James Lewis | Jonny LeRoy

Ketan Padegaonkar | Lakshminarasimhan Sudarshan | Marco Valtas | Mike Mason | Neal Ford

Ni Wang | Rachel Laycock | Scott Shaw | Shangqi Liu | Zhamak Dehghani

Traduccedilatildeo Alexey Villas Bocircas Camilla Crispim Marco Valtas Paula Ribas e Ricardo Cavalcanti

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 3

O QUE HAacute DE NOVOEstes satildeo os temas em destaque nessa ediccedilatildeo

NUVENS GRUDENTAS

Os provedores de nuvem sabem que estatildeo em um mercado altamente competitivo e que para terem sucesso precisam adquirir e reter clientes de longo prazo Assim para se manterem diferenciados correm para adicionar novas funcionalidades e os vemos atingindo uma paridade de recursos o que se reflete no fato de colocarmos AWS Google Cloud Platform e Azure no anel Experimente nesta ediccedilatildeo No entanto uma vez que conquistam os clientes esses provedores tendem a criar uma relaccedilatildeo o mais ldquogrudentardquo possiacutevel com seus clientes para desencorajar a migraccedilatildeo para outro provedor Frequentemente isso se manifesta em uma forte dependecircncia da sua suiacutete especiacutefica de serviccedilos e ferramentas oferecendo uma melhor experiecircncia de desenvolvimento desde que os clientes permaneccedilam com eles Algumas empresas satildeo surpreendidas quando esse grude se torna aparente geralmente ao optar por mover partes ou todas as suas cargas de trabalho para outra nuvem ou ao descobrir que o uso da nuvem e seu custo estatildeo fora de controle Encorajamos nossos clientes a usar a teacutecnica de custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural para monitorar o custo de operaccedilatildeo que eacute um indicador de dependecircncia de determinado provedor ou Kubernetes e contecircineres para aumentar a portabilidade da carga de trabalho e reduzir o custo de mudanccedila para outra nuvem por meio de infraestrutura como coacutedigo Nesta ediccedilatildeo do Radar tambeacutem apresentamos duas novas ferramentas de automaccedilatildeo de infraestrutura em nuvem Terragrunt e Pulumi Apesar de apoiarmos que se considere dependecircncia ao avaliar novas ofertas do seu provedor de nuvem advertimos contra o uso geneacuterico da nuvem Na nossa experiecircncia o custo de criar e manter camadas de abstraccedilatildeo agnoacutesticas de um provedor especiacutefico de nuvem supera o custo de saiacuteda de um provedor especiacutefico

ANTIPADROtildeES CORPORATIVOS PERSISTENTES

Natildeo importa a velocidade de mudanccedila da tecnologia as empresas ainda encontram maneiras de reimplementar antipadrotildees do passado Muitos de nossos registros no anel Evite denunciam um lobo velho disfarccedilado de ovelha nova comportamento de Enterprise Service Bus (ESB) implementado em plataformas de fluxo de eventos mdash Recriando antipadrotildees ESB com Kafka Arquitetura de microsserviccedilos em camadas Pacotes com fome de dados Gateways de API excessivamente ambiciosos Plataformas de baixo coacutedigo e outras praacuteticas antigas nocivas O problema fundamental como sempre eacute o equiliacutebrio entre isolamento e acoplamento isolamos as coisas para tornaacute-las gerenciaacuteveis a partir de uma perspectiva teacutecnica mas posteriormente precisamos adicionar coordenaccedilatildeo para tornaacute-las uacuteteis na resoluccedilatildeo de problemas de negoacutecios resultando em alguma forma de acoplamento Dessa forma esses velhos padrotildees continuam reemergindo Novas arquiteturas e ferramentas fornecem meios apropriados para resolver esses problemas mas isso requer um esforccedilo deliberado para entender como usaacute-las apropriadamente e natildeo apenas voltar a reimplementar padrotildees antigos com novas tecnologias

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 4

O QUE HAacute DE NOVOEstes satildeo os temas em destaque nessa ediccedilatildeo

PRAacuteTICAS PERENES DE ENGENHARIA

Um efeito colateral do ritmo acelerado da inovaccedilatildeo tecnoloacutegica eacute um padratildeo repetitivo de expansatildeo e contraccedilatildeo Quando surge uma nova inovaccedilatildeo que muda fundamentalmente a maneira como pensamos sobre algum aspecto do desenvolvimento de software a induacutestria corre para adotar conteinerizaccedilatildeo front-ends reativos aprendizagem de maacutequina e assim por diante Essa eacute a fase de expansatildeo No entanto para tornar esse elemento novo realmente eficaz eacute necessaacuterio descobrir como aplicar praacuteticas de engenharia perenes entrega contiacutenua testes colaboraccedilatildeo e assim por diante A fase de contraccedilatildeo ocorre quando determinamos como usar esse novo recurso de forma eficaz criando uma base firme para permitir a proacutexima expansatildeo explosiva Durante essa fase aprendemos a aplicar praacuteticas como testes automatizados abrangentes e automatizaccedilatildeo de sequecircncias de etapas recorrentes dentro do contexto da nova tecnologia Frequentemente isso caminha de matildeos dadas com a criaccedilatildeo de novas ferramentas de desenvolvimento Embora possa parecer que a introduccedilatildeo de uma nova inovaccedilatildeo tecnoloacutegica por si soacute avanccedila nossa induacutestria eacute a combinaccedilatildeo dessa inovaccedilatildeo com praacuteticas de engenharia perenes que sustenta nosso progresso contiacutenuo

RITMO = DISTAcircNCIA TEMPO

Nossos temas geralmente destacam um padratildeo que observamos em vaacuterias entradas no Radar atual mas este se refere a todas as entradas durante a vida uacutetil do Radar Percebemos (e fizemos algumas pesquisas para comprovar) que o tempo que nossos blips permanecem no Radar estaacute caindo Quando comeccedilamos o Radar uma deacutecada atraacutes o padratildeo para as entradas era permanecer por duas ediccedilotildees do Radar (aproximadamente um ano) sem nenhum movimento antes que elas desaparecessem automaticamente No entanto como indicado pela foacutermula no tiacutetulo deste tema ritmo = distacircncia sobre tempo a mudanccedila no ecossistema de desenvolvimento de software continua a acelerar O tempo permanece constante (ainda criamos o Radar duas vezes por ano) mas a distacircncia percorrida em termos de inovaccedilatildeo tecnoloacutegica aumentou consideravelmente fornecendo ainda mais evidecircncias ao que eacute oacutebvio para qualquer pessoa observadora o ritmo da mudanccedila tecnoloacutegica continua a aumentar Vemos o aumento do ritmo em todos os nossos quadrantes do Radar e tambeacutem no apetite de nossos clientes para adotar novas e diversas opccedilotildees tecnoloacutegicas Consequentemente modificamos nosso padratildeo tradicional para este Radar agora cada entrada deve aparecer no Radar com base em seu meacuterito atualmdashnatildeo permitimos mais que elas permaneccedilam por padratildeo Fizemos essa mudanccedila apoacutes uma anaacutelise cuidadosa sentindo que isso nos permite capturar melhor o ritmo freneacutetico de mudanccedila sempre presente no ecossistema de tecnologia

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 5

SOBRE O RADARThoughtWorkers satildeo pessoas apaixonadas por tecnologia Noacutes desenvolvemos pesquisamos testamos contribuiacutemos com coacutedigo livre escrevemos e visamos a sua constante melhoria mdash para todas as pessoas Nossa missatildeo eacute liderar e promover a excelecircncia de software e revolucionar a induacutestria de TI Noacutes criamos e compartilhamos o Technology Radar da ThoughtWorks para apoiar essa missatildeo O Conselho Consultivo de Tecnologia (Technology Advisory Board ou TAB) um grupo de liacutederes experientes em tecnologia da ThoughtWorks eacute responsaacutevel por criar o Radar O grupo se reuacutene regularmente para discutir a estrateacutegia global de tecnologia para a empresa e as tendecircncias tecnoloacutegicas que impactam significativamente a nossa induacutestria

RADAR EM UM RELANCE

Itens novos ou que sofreram alteraccedilotildees significativas desde o uacuteltimo Radar satildeo representados como triacircngulos enquanto os itens que natildeo mudaram satildeo representados como ciacuterculos

Nosso Radar eacute um olhar para o futuro Para abrir espaccedilo para novos itens apagamos itens em que natildeo houve mudanccedila recentemente o que natildeo eacute uma representaccedilatildeo de seu valor mas uma soluccedilatildeo para nossa limitaccedilatildeo de espaccedilo

NOVO OU MODIFICADO

SEM MODIFICACcedilAtildeO

EVITEProssiga com cautela

4AVALIEVale a pena explorar com o objetivo de compreender como isso afetaraacute sua empresa

3

EXPERIMENTEVale a pena ir atraacutes Eacute importante entender como desenvolver essa capacidade As empresas devem experimentar esta tecnologia em um projeto que possa lidar com o risco

2ADOTEAcreditamos firmemente que a induacutestria deveria adotar esses itens Noacutes os usamos quando satildeo apropriados em nossos projetos

1

O Radar captura o resultado das discussotildees do TAB em um formato que procura oferecer valor a uma ampla gama de pessoas interessadas de CTOs a pessoas que desenvolvem software O conteuacutedo eacute concebido para ser um resumo conciso

Noacutes encorajamos vocecirc a explorar essas tecnologias para obter mais detalhes O Radar eacute graacutefico por natureza agrupando os itens em teacutecnicas ferramentas plataformas e linguagens amp frameworks Quando itens do Radar puderem ser classificados em mais de um quadrante escolhemos aquele que parece ser mais adequado Aleacutem disso agrupamos esses itens em quatro aneacuteis para refletir a nossa posiccedilatildeo atual em relaccedilatildeo a eles

Para mais informaccedilotildees sobre o Radar veja thoughtworkscomptradarfaq

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

96 108

421 3

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 6

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

O RADARTEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 7

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

O RADAR

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 3: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 3

O QUE HAacute DE NOVOEstes satildeo os temas em destaque nessa ediccedilatildeo

NUVENS GRUDENTAS

Os provedores de nuvem sabem que estatildeo em um mercado altamente competitivo e que para terem sucesso precisam adquirir e reter clientes de longo prazo Assim para se manterem diferenciados correm para adicionar novas funcionalidades e os vemos atingindo uma paridade de recursos o que se reflete no fato de colocarmos AWS Google Cloud Platform e Azure no anel Experimente nesta ediccedilatildeo No entanto uma vez que conquistam os clientes esses provedores tendem a criar uma relaccedilatildeo o mais ldquogrudentardquo possiacutevel com seus clientes para desencorajar a migraccedilatildeo para outro provedor Frequentemente isso se manifesta em uma forte dependecircncia da sua suiacutete especiacutefica de serviccedilos e ferramentas oferecendo uma melhor experiecircncia de desenvolvimento desde que os clientes permaneccedilam com eles Algumas empresas satildeo surpreendidas quando esse grude se torna aparente geralmente ao optar por mover partes ou todas as suas cargas de trabalho para outra nuvem ou ao descobrir que o uso da nuvem e seu custo estatildeo fora de controle Encorajamos nossos clientes a usar a teacutecnica de custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural para monitorar o custo de operaccedilatildeo que eacute um indicador de dependecircncia de determinado provedor ou Kubernetes e contecircineres para aumentar a portabilidade da carga de trabalho e reduzir o custo de mudanccedila para outra nuvem por meio de infraestrutura como coacutedigo Nesta ediccedilatildeo do Radar tambeacutem apresentamos duas novas ferramentas de automaccedilatildeo de infraestrutura em nuvem Terragrunt e Pulumi Apesar de apoiarmos que se considere dependecircncia ao avaliar novas ofertas do seu provedor de nuvem advertimos contra o uso geneacuterico da nuvem Na nossa experiecircncia o custo de criar e manter camadas de abstraccedilatildeo agnoacutesticas de um provedor especiacutefico de nuvem supera o custo de saiacuteda de um provedor especiacutefico

ANTIPADROtildeES CORPORATIVOS PERSISTENTES

Natildeo importa a velocidade de mudanccedila da tecnologia as empresas ainda encontram maneiras de reimplementar antipadrotildees do passado Muitos de nossos registros no anel Evite denunciam um lobo velho disfarccedilado de ovelha nova comportamento de Enterprise Service Bus (ESB) implementado em plataformas de fluxo de eventos mdash Recriando antipadrotildees ESB com Kafka Arquitetura de microsserviccedilos em camadas Pacotes com fome de dados Gateways de API excessivamente ambiciosos Plataformas de baixo coacutedigo e outras praacuteticas antigas nocivas O problema fundamental como sempre eacute o equiliacutebrio entre isolamento e acoplamento isolamos as coisas para tornaacute-las gerenciaacuteveis a partir de uma perspectiva teacutecnica mas posteriormente precisamos adicionar coordenaccedilatildeo para tornaacute-las uacuteteis na resoluccedilatildeo de problemas de negoacutecios resultando em alguma forma de acoplamento Dessa forma esses velhos padrotildees continuam reemergindo Novas arquiteturas e ferramentas fornecem meios apropriados para resolver esses problemas mas isso requer um esforccedilo deliberado para entender como usaacute-las apropriadamente e natildeo apenas voltar a reimplementar padrotildees antigos com novas tecnologias

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 4

O QUE HAacute DE NOVOEstes satildeo os temas em destaque nessa ediccedilatildeo

PRAacuteTICAS PERENES DE ENGENHARIA

Um efeito colateral do ritmo acelerado da inovaccedilatildeo tecnoloacutegica eacute um padratildeo repetitivo de expansatildeo e contraccedilatildeo Quando surge uma nova inovaccedilatildeo que muda fundamentalmente a maneira como pensamos sobre algum aspecto do desenvolvimento de software a induacutestria corre para adotar conteinerizaccedilatildeo front-ends reativos aprendizagem de maacutequina e assim por diante Essa eacute a fase de expansatildeo No entanto para tornar esse elemento novo realmente eficaz eacute necessaacuterio descobrir como aplicar praacuteticas de engenharia perenes entrega contiacutenua testes colaboraccedilatildeo e assim por diante A fase de contraccedilatildeo ocorre quando determinamos como usar esse novo recurso de forma eficaz criando uma base firme para permitir a proacutexima expansatildeo explosiva Durante essa fase aprendemos a aplicar praacuteticas como testes automatizados abrangentes e automatizaccedilatildeo de sequecircncias de etapas recorrentes dentro do contexto da nova tecnologia Frequentemente isso caminha de matildeos dadas com a criaccedilatildeo de novas ferramentas de desenvolvimento Embora possa parecer que a introduccedilatildeo de uma nova inovaccedilatildeo tecnoloacutegica por si soacute avanccedila nossa induacutestria eacute a combinaccedilatildeo dessa inovaccedilatildeo com praacuteticas de engenharia perenes que sustenta nosso progresso contiacutenuo

RITMO = DISTAcircNCIA TEMPO

Nossos temas geralmente destacam um padratildeo que observamos em vaacuterias entradas no Radar atual mas este se refere a todas as entradas durante a vida uacutetil do Radar Percebemos (e fizemos algumas pesquisas para comprovar) que o tempo que nossos blips permanecem no Radar estaacute caindo Quando comeccedilamos o Radar uma deacutecada atraacutes o padratildeo para as entradas era permanecer por duas ediccedilotildees do Radar (aproximadamente um ano) sem nenhum movimento antes que elas desaparecessem automaticamente No entanto como indicado pela foacutermula no tiacutetulo deste tema ritmo = distacircncia sobre tempo a mudanccedila no ecossistema de desenvolvimento de software continua a acelerar O tempo permanece constante (ainda criamos o Radar duas vezes por ano) mas a distacircncia percorrida em termos de inovaccedilatildeo tecnoloacutegica aumentou consideravelmente fornecendo ainda mais evidecircncias ao que eacute oacutebvio para qualquer pessoa observadora o ritmo da mudanccedila tecnoloacutegica continua a aumentar Vemos o aumento do ritmo em todos os nossos quadrantes do Radar e tambeacutem no apetite de nossos clientes para adotar novas e diversas opccedilotildees tecnoloacutegicas Consequentemente modificamos nosso padratildeo tradicional para este Radar agora cada entrada deve aparecer no Radar com base em seu meacuterito atualmdashnatildeo permitimos mais que elas permaneccedilam por padratildeo Fizemos essa mudanccedila apoacutes uma anaacutelise cuidadosa sentindo que isso nos permite capturar melhor o ritmo freneacutetico de mudanccedila sempre presente no ecossistema de tecnologia

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 5

SOBRE O RADARThoughtWorkers satildeo pessoas apaixonadas por tecnologia Noacutes desenvolvemos pesquisamos testamos contribuiacutemos com coacutedigo livre escrevemos e visamos a sua constante melhoria mdash para todas as pessoas Nossa missatildeo eacute liderar e promover a excelecircncia de software e revolucionar a induacutestria de TI Noacutes criamos e compartilhamos o Technology Radar da ThoughtWorks para apoiar essa missatildeo O Conselho Consultivo de Tecnologia (Technology Advisory Board ou TAB) um grupo de liacutederes experientes em tecnologia da ThoughtWorks eacute responsaacutevel por criar o Radar O grupo se reuacutene regularmente para discutir a estrateacutegia global de tecnologia para a empresa e as tendecircncias tecnoloacutegicas que impactam significativamente a nossa induacutestria

RADAR EM UM RELANCE

Itens novos ou que sofreram alteraccedilotildees significativas desde o uacuteltimo Radar satildeo representados como triacircngulos enquanto os itens que natildeo mudaram satildeo representados como ciacuterculos

Nosso Radar eacute um olhar para o futuro Para abrir espaccedilo para novos itens apagamos itens em que natildeo houve mudanccedila recentemente o que natildeo eacute uma representaccedilatildeo de seu valor mas uma soluccedilatildeo para nossa limitaccedilatildeo de espaccedilo

NOVO OU MODIFICADO

SEM MODIFICACcedilAtildeO

EVITEProssiga com cautela

4AVALIEVale a pena explorar com o objetivo de compreender como isso afetaraacute sua empresa

3

EXPERIMENTEVale a pena ir atraacutes Eacute importante entender como desenvolver essa capacidade As empresas devem experimentar esta tecnologia em um projeto que possa lidar com o risco

2ADOTEAcreditamos firmemente que a induacutestria deveria adotar esses itens Noacutes os usamos quando satildeo apropriados em nossos projetos

1

O Radar captura o resultado das discussotildees do TAB em um formato que procura oferecer valor a uma ampla gama de pessoas interessadas de CTOs a pessoas que desenvolvem software O conteuacutedo eacute concebido para ser um resumo conciso

Noacutes encorajamos vocecirc a explorar essas tecnologias para obter mais detalhes O Radar eacute graacutefico por natureza agrupando os itens em teacutecnicas ferramentas plataformas e linguagens amp frameworks Quando itens do Radar puderem ser classificados em mais de um quadrante escolhemos aquele que parece ser mais adequado Aleacutem disso agrupamos esses itens em quatro aneacuteis para refletir a nossa posiccedilatildeo atual em relaccedilatildeo a eles

Para mais informaccedilotildees sobre o Radar veja thoughtworkscomptradarfaq

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

96 108

421 3

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 6

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

O RADARTEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 7

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

O RADAR

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 4: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 4

O QUE HAacute DE NOVOEstes satildeo os temas em destaque nessa ediccedilatildeo

PRAacuteTICAS PERENES DE ENGENHARIA

Um efeito colateral do ritmo acelerado da inovaccedilatildeo tecnoloacutegica eacute um padratildeo repetitivo de expansatildeo e contraccedilatildeo Quando surge uma nova inovaccedilatildeo que muda fundamentalmente a maneira como pensamos sobre algum aspecto do desenvolvimento de software a induacutestria corre para adotar conteinerizaccedilatildeo front-ends reativos aprendizagem de maacutequina e assim por diante Essa eacute a fase de expansatildeo No entanto para tornar esse elemento novo realmente eficaz eacute necessaacuterio descobrir como aplicar praacuteticas de engenharia perenes entrega contiacutenua testes colaboraccedilatildeo e assim por diante A fase de contraccedilatildeo ocorre quando determinamos como usar esse novo recurso de forma eficaz criando uma base firme para permitir a proacutexima expansatildeo explosiva Durante essa fase aprendemos a aplicar praacuteticas como testes automatizados abrangentes e automatizaccedilatildeo de sequecircncias de etapas recorrentes dentro do contexto da nova tecnologia Frequentemente isso caminha de matildeos dadas com a criaccedilatildeo de novas ferramentas de desenvolvimento Embora possa parecer que a introduccedilatildeo de uma nova inovaccedilatildeo tecnoloacutegica por si soacute avanccedila nossa induacutestria eacute a combinaccedilatildeo dessa inovaccedilatildeo com praacuteticas de engenharia perenes que sustenta nosso progresso contiacutenuo

RITMO = DISTAcircNCIA TEMPO

Nossos temas geralmente destacam um padratildeo que observamos em vaacuterias entradas no Radar atual mas este se refere a todas as entradas durante a vida uacutetil do Radar Percebemos (e fizemos algumas pesquisas para comprovar) que o tempo que nossos blips permanecem no Radar estaacute caindo Quando comeccedilamos o Radar uma deacutecada atraacutes o padratildeo para as entradas era permanecer por duas ediccedilotildees do Radar (aproximadamente um ano) sem nenhum movimento antes que elas desaparecessem automaticamente No entanto como indicado pela foacutermula no tiacutetulo deste tema ritmo = distacircncia sobre tempo a mudanccedila no ecossistema de desenvolvimento de software continua a acelerar O tempo permanece constante (ainda criamos o Radar duas vezes por ano) mas a distacircncia percorrida em termos de inovaccedilatildeo tecnoloacutegica aumentou consideravelmente fornecendo ainda mais evidecircncias ao que eacute oacutebvio para qualquer pessoa observadora o ritmo da mudanccedila tecnoloacutegica continua a aumentar Vemos o aumento do ritmo em todos os nossos quadrantes do Radar e tambeacutem no apetite de nossos clientes para adotar novas e diversas opccedilotildees tecnoloacutegicas Consequentemente modificamos nosso padratildeo tradicional para este Radar agora cada entrada deve aparecer no Radar com base em seu meacuterito atualmdashnatildeo permitimos mais que elas permaneccedilam por padratildeo Fizemos essa mudanccedila apoacutes uma anaacutelise cuidadosa sentindo que isso nos permite capturar melhor o ritmo freneacutetico de mudanccedila sempre presente no ecossistema de tecnologia

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 5

SOBRE O RADARThoughtWorkers satildeo pessoas apaixonadas por tecnologia Noacutes desenvolvemos pesquisamos testamos contribuiacutemos com coacutedigo livre escrevemos e visamos a sua constante melhoria mdash para todas as pessoas Nossa missatildeo eacute liderar e promover a excelecircncia de software e revolucionar a induacutestria de TI Noacutes criamos e compartilhamos o Technology Radar da ThoughtWorks para apoiar essa missatildeo O Conselho Consultivo de Tecnologia (Technology Advisory Board ou TAB) um grupo de liacutederes experientes em tecnologia da ThoughtWorks eacute responsaacutevel por criar o Radar O grupo se reuacutene regularmente para discutir a estrateacutegia global de tecnologia para a empresa e as tendecircncias tecnoloacutegicas que impactam significativamente a nossa induacutestria

RADAR EM UM RELANCE

Itens novos ou que sofreram alteraccedilotildees significativas desde o uacuteltimo Radar satildeo representados como triacircngulos enquanto os itens que natildeo mudaram satildeo representados como ciacuterculos

Nosso Radar eacute um olhar para o futuro Para abrir espaccedilo para novos itens apagamos itens em que natildeo houve mudanccedila recentemente o que natildeo eacute uma representaccedilatildeo de seu valor mas uma soluccedilatildeo para nossa limitaccedilatildeo de espaccedilo

NOVO OU MODIFICADO

SEM MODIFICACcedilAtildeO

EVITEProssiga com cautela

4AVALIEVale a pena explorar com o objetivo de compreender como isso afetaraacute sua empresa

3

EXPERIMENTEVale a pena ir atraacutes Eacute importante entender como desenvolver essa capacidade As empresas devem experimentar esta tecnologia em um projeto que possa lidar com o risco

2ADOTEAcreditamos firmemente que a induacutestria deveria adotar esses itens Noacutes os usamos quando satildeo apropriados em nossos projetos

1

O Radar captura o resultado das discussotildees do TAB em um formato que procura oferecer valor a uma ampla gama de pessoas interessadas de CTOs a pessoas que desenvolvem software O conteuacutedo eacute concebido para ser um resumo conciso

Noacutes encorajamos vocecirc a explorar essas tecnologias para obter mais detalhes O Radar eacute graacutefico por natureza agrupando os itens em teacutecnicas ferramentas plataformas e linguagens amp frameworks Quando itens do Radar puderem ser classificados em mais de um quadrante escolhemos aquele que parece ser mais adequado Aleacutem disso agrupamos esses itens em quatro aneacuteis para refletir a nossa posiccedilatildeo atual em relaccedilatildeo a eles

Para mais informaccedilotildees sobre o Radar veja thoughtworkscomptradarfaq

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

96 108

421 3

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 6

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

O RADARTEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 7

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

O RADAR

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 5: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 5

SOBRE O RADARThoughtWorkers satildeo pessoas apaixonadas por tecnologia Noacutes desenvolvemos pesquisamos testamos contribuiacutemos com coacutedigo livre escrevemos e visamos a sua constante melhoria mdash para todas as pessoas Nossa missatildeo eacute liderar e promover a excelecircncia de software e revolucionar a induacutestria de TI Noacutes criamos e compartilhamos o Technology Radar da ThoughtWorks para apoiar essa missatildeo O Conselho Consultivo de Tecnologia (Technology Advisory Board ou TAB) um grupo de liacutederes experientes em tecnologia da ThoughtWorks eacute responsaacutevel por criar o Radar O grupo se reuacutene regularmente para discutir a estrateacutegia global de tecnologia para a empresa e as tendecircncias tecnoloacutegicas que impactam significativamente a nossa induacutestria

RADAR EM UM RELANCE

Itens novos ou que sofreram alteraccedilotildees significativas desde o uacuteltimo Radar satildeo representados como triacircngulos enquanto os itens que natildeo mudaram satildeo representados como ciacuterculos

Nosso Radar eacute um olhar para o futuro Para abrir espaccedilo para novos itens apagamos itens em que natildeo houve mudanccedila recentemente o que natildeo eacute uma representaccedilatildeo de seu valor mas uma soluccedilatildeo para nossa limitaccedilatildeo de espaccedilo

NOVO OU MODIFICADO

SEM MODIFICACcedilAtildeO

EVITEProssiga com cautela

4AVALIEVale a pena explorar com o objetivo de compreender como isso afetaraacute sua empresa

3

EXPERIMENTEVale a pena ir atraacutes Eacute importante entender como desenvolver essa capacidade As empresas devem experimentar esta tecnologia em um projeto que possa lidar com o risco

2ADOTEAcreditamos firmemente que a induacutestria deveria adotar esses itens Noacutes os usamos quando satildeo apropriados em nossos projetos

1

O Radar captura o resultado das discussotildees do TAB em um formato que procura oferecer valor a uma ampla gama de pessoas interessadas de CTOs a pessoas que desenvolvem software O conteuacutedo eacute concebido para ser um resumo conciso

Noacutes encorajamos vocecirc a explorar essas tecnologias para obter mais detalhes O Radar eacute graacutefico por natureza agrupando os itens em teacutecnicas ferramentas plataformas e linguagens amp frameworks Quando itens do Radar puderem ser classificados em mais de um quadrante escolhemos aquele que parece ser mais adequado Aleacutem disso agrupamos esses itens em quatro aneacuteis para refletir a nossa posiccedilatildeo atual em relaccedilatildeo a eles

Para mais informaccedilotildees sobre o Radar veja thoughtworkscomptradarfaq

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

96 108

421 3

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 6

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

O RADARTEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 7

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

O RADAR

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 6: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 6

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

O RADARTEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 7

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

O RADAR

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 7: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 7

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

Novo ou modificadoSem modificaccedilatildeo

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

O RADAR

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 8: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 8

Quando as organizaccedilotildees migram para os microsserviccedilos um dos principais impulsionadores eacute a esperanccedila de um tempo de ida a mercado mais raacutepido No entanto essa aspiraccedilatildeo soacute tende a acontecer quando os serviccedilos (e seus times de apoio) satildeo distribuiacutedos de forma homogecircnea entre os limites do domiacutenio de negoacutecios de longa duraccedilatildeo Caso contraacuterio funcionalidades significativas naturalmente exigiratildeo uma coordenaccedilatildeo rigorosa entre vaacuterios times e serviccedilos introduzindo atrito natural na priorizaccedilatildeo de roadmaps concorrentes A soluccedilatildeo para esse problema eacute uma boa modelagem de domiacutenio EVENT STORMING rapidamente se tornou um dos nossos meacutetodos favoritos para identificar com rapidez os principais conceitos em um espaccedilo de problema e alinhar vaacuterias partes interessadas da melhor maneira para distribuir soluccedilotildees potenciais

O feedback raacutepido eacute um dos nossos valores fundamentais para construir software Por muitos anos usamos a abordagem de implantaccedilatildeo canaacuterio para incentivar o feedback raacutepido de novas versotildees de software reduzindo o risco por meio de lanccedilamentos incrementais para usuaacuterios selecionados Uma das questotildees relacionadas a essa teacutecnica eacute como segmentar

usuaacuterios Implantaccedilotildees canaacuterio para um segmento muito pequeno (por exemplo 1) de usuaacuterios podem ser um catalisador para mudanccedilas Enquanto comeccedilar com um segmento muito pequeno de usuaacuterios permite que os times se sintam confortaacuteveis com a teacutecnica a captaccedilatildeo de feedback raacutepido do usuaacuterio permite que diversos times observem o impacto de novas implantaccedilotildees aprendam e ajustem o curso conforme necessaacuterio ndash uma mudanccedila inestimaacutevel na cultura de engenharia Noacutes chamamos isso de poder do 1 CANAacuteRIO

A maioria das organizaccedilotildees que natildeo possuem recursos para criar software personalizado escolhe soluccedilotildees prontas para uso ou SaaS para atender a seus requisitos No entanto frequentemente essas soluccedilotildees tendem a expandir agressivamente seu escopo para se envolver em todas as partes do seu negoacutecio Isso ofusca os limites de integraccedilatildeo e torna a mudanccedila menos previsiacutevel e lenta Para mitigar esse risco recomendamos que as organizaccedilotildees desenvolvam um modelo objetivo de priorizaccedilatildeo de recursos e em seguida implantem uma estrateacutegia que chamamos de COMPRA DELIMITADA ou seja escolher apenas produtos de fornecedores que sejam modulares e desacoplados e possam ficar

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

TEacuteCNICASADOTE1 Event Storming

EXPERIMENTE2 1 canaacuterio NOVO3 Compra Delimitada NOVO4 Destruiccedilatildeo criptografada NOVO5 Quatro meacutetricas fundamentais NOVO6 Configuraccedilatildeo de nuvem para muacuteltiplas contas NOVO7 Observabilidade como coacutedigo NOVO8 Estrateacutegia de fornecedor com risco proporcional NOVO9 Custo de execuccedilatildeo como funccedilatildeo de aptidatildeo arquitetural NOVO10 Segredos como serviccedilo NOVO11 Engenharia de Caos de Seguranccedila12 Dados versionados para anaacutelises reproduziacuteveis NOVO

AVALIE13 Katas de Caos NOVO14 Imagens Docker sem distribuiccedilatildeo NOVO15 Entrega incremental com COTS NOVO16 Analisador automatizado da configuraccedilatildeo de infraestrutura17 Verificaccedilotildees de preacute-commit de compilaccedilatildeo downstream NOVO18 Malha de serviccedilos

EVITE19 Inicializaccedilatildeo manual de clusters Hadoop usando

ferramentas de gerenciamento de configuraccedilatildeo NOVO20 Uso geneacuterico da nuvem21 Arquitetura de microsserviccedilos em camadas NOVO22 Gerenciamento de dados mestre NOVO23 Inveja de microsserviccedilos24 Eventos de solicitaccedilatildeo-resposta em fluxos de trabalho

voltados ao usuaacuterio NOVO25 RPA NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 9: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 9

contidos no Contexto Delimitado de um uacutenico recurso do negoacutecio Essa modularidade e capacidade de entrega independente deve ser incluiacuteda nos criteacuterios de aceitaccedilatildeo de um processo de escolha de fornecedores

Manter o controle adequado sobre dados confidenciais eacute difiacutecil especialmente quando ndash para fins de backup e recuperaccedilatildeo ndash os dados satildeo copiados fora de um sistema mestre de registro A DESTRUICcedilAtildeO CRIPTOGRAFADA eacute a praacutetica de tornar os dados confidenciais ilegiacuteveis sobrescrevendo ou excluindo deliberadamente as chaves de criptografia usadas para proteger esses dados Por exemplo uma tabela inteira de detalhes pessoais do cliente pode ser criptografada usando chaves aleatoacuterias para cada registro com uma tabela diferente armazenando as chaves Se um cliente exercitou seu ldquodireito de ser esquecidordquo podemos simplesmente excluir a chave apropriada efetivamente ldquodestruindordquo os dados criptografados Essa teacutecnica pode ser uacutetil quando temos confianccedila em manter o controle adequado de um conjunto menor de chaves de criptografia mas temos menos confianccedila em relaccedilatildeo ao controle sobre um conjunto de dados maior

O relatoacuterio State of DevOps e o livro subsequente Accelerate destacam um fato surpreendente para prever e melhorar o desempenho de um time precisamos apenas medir lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e alterar a porcentagem de falhas(Quatro meacutetricas fundamentais)

O relatoacuterio State of DevOps publicado pela primeira vez em 2014 afirma que times de alto desempenho criam organizaccedilotildees de alto desempenho Recentemente o time por traacutes do relatoacuterio publicou Accelerate que descreve o meacutetodo cientiacutefico usado no relatoacuterio Uma das principais conclusotildees de ambos os materiais satildeo as QUATRO MEacuteTRICAS FUNDAMENTAIS para sustentar o desempenho de entrega de software lead time frequecircncia de implantaccedilatildeo tempo meacutedio de restauraccedilatildeo (MTTR) e porcentagem de falha de alteraccedilatildeo Como uma consultoria que ajudou na transformaccedilatildeo de muitas organizaccedilotildees vemos essas meacutetricas surgirem frequentemente como uma forma de ajudar as organizaccedilotildees a determinar se estatildeo melhorando o desempenho geral Cada meacutetrica cria um ciclo virtuoso e direciona o foco dos times agrave melhoria contiacutenua

para reduzir o lead time vocecirc reduz as atividades desnecessaacuterias que por sua vez permitem implantar com mais frequecircncia a frequecircncia de implantaccedilatildeo forccedila seus times a melhorar suas praacuteticas e automaccedilatildeo sua velocidade para se recuperar de falhas eacute aprimorada por melhores praacuteticas automaccedilatildeo e monitoramento que reduzem a frequecircncia de falhas

O autoatendimento sob demanda eacute uma caracteriacutestica fundamental (e beneacutefica) da computaccedilatildeo em nuvem Quando cenaacuterios de serviccedilos de larga escala satildeo implantados usando uma uacutenica conta regras e processos relacionados ao uso dessa conta se tornam necessaacuterios geralmente envolvendo etapas de aprovaccedilatildeo que aumentam o tempo de resposta Uma abordagem melhor eacute a de CONFIGURACcedilAtildeO DE NUVEM PARA MUacuteLTIPLAS CONTAS em que vaacuterias contas satildeo usadas em casos exgtremos uma conta por equipe Isso de fato adiciona custos em outros lugares por exemplo para garantir o faturamento compartilhado permitir a comunicaccedilatildeo entre VPCs e gerenciar o relacionamento com o provedor de nuvem No entanto isso geralmente acelera o desenvolvimento e melhora a seguranccedila porque as contas de serviccedilo uacutenico satildeo mais faacuteceis de auditar e no caso de uma violaccedilatildeo o impacto eacute bastante reduzido Ter vaacuterias contas tambeacutem reduz a dependecircncia de provedor de novem porque uma conta fornece um bom limite para serviccedilos que podem ser movidos em bloco para outro provedor de nuvem

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura de microsserviccedilos distribuiacuteda Dependemos de diferentes saiacutedas do sistema como rastreamento distribuiacutedo registros agregados e meacutetricas para inferir o estado interno dos componentes distribuiacutedos diagnosticar onde estatildeo os problemas e chegar agrave raiz da causa Um aspecto importante de um ecossistema de observabilidade eacute o monitoramento ndash visualizaccedilatildeo e anaacutelise da saiacuteda do sistema ndash e o alerta quando condiccedilotildees inesperadas satildeo detectadas Tradicionalmente a configuraccedilatildeo de paineacuteis de monitoramento e a configuraccedilatildeo de alertas satildeo feita por meio de sistemas de apontar e clicar baseados em GUI Essa abordagem leva a configuraccedilotildees de painel natildeo repetiacuteveis incapacidade de testar e ajustar continuamente os alertas para evitar a fadiga ou a perda de alertas importantes aleacutem do distanciamento de boas praacuteticas das organizaccedilotildees Eacute altamente recomendaacutevel tratar suas configuraccedilotildees do ecossistema de OBSERVABILIDADE COMO COacuteDIGO aleacutem de adotar infraestrutura como coacutedigo para sua infraestrutura de monitoramento e alertas Escolha produtos de observabilidade que suportam configuraccedilatildeo

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 10: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 10

por meio de coacutedigo controlado por versatildeo e execuccedilatildeo de APIs ou comandos por meio de pipelines de CD de infraestrutura A observabilidade como coacutedigo eacute um aspecto muitas vezes esquecido da infraestrutura como coacutedigo e acreditamos que seja crucial o suficiente para ser destacada

A observabilidade eacute parte integrante da operaccedilatildeo de uma arquitetura distribuiacuteda e baseada em microsserviccedilos Recomendamos tratar suas configuraccedilotildees de ecossistema de observaccedilatildeo como coacutedigo (Observabilidade como coacutedigo)

Muitas vezes em um esforccedilo para terceirizar o risco para seus fornecedores as empresas buscam um uacutenico fornecedor para suas implementaccedilotildees de sistema mais criacuteticas e arriscadas Infelizmente isso proporciona menos opccedilotildees de soluccedilatildeo e menos flexibilidade Ao inveacutes disso as empresas devem procurar manter uma maior independecircncia de fornecedores nos pontos onde a exposiccedilatildeo ao risco do negoacutecio eacute maior Vemos uma ESTRATEacuteGIA DE FORNECEDOR COM RISCO PROPORCIONAL emergente que incentiva o investimento para manter a independecircncia do fornecedor para sistemas de negoacutecio altamente criacuteticos Funccedilotildees de negoacutecios menos criacuteticas podem tirar proveito da entrega simplificada de uma soluccedilatildeo nativa do fornecedor porque permitem absorver mais facilmente o impacto da perda desse fornecedor Esse trade-off tornou-se aparente agrave medida que os principais provedores de nuvem expandiram sua gama de ofertas de serviccedilos Por exemplo usar o AWS Secret Management Service pode acelerar o desenvolvimento inicial e tem o benefiacutecio da integraccedilatildeo do ecossistema mas tambeacutem adicionaraacute mais ineacutercia se vocecirc precisar migrar para um provedor de nuvem diferente do que teria se tivesse implementado por exemplo Vault

Ainda vemos times que natildeo monitoram o custo de execuccedilatildeo de suas aplicaccedilotildees com a devida atenccedilatildeo agrave medida que sua arquitetura de software ou uso evolui Isso acontece principalmente quando se utiliza uma arquitetura sem servidor que leva as pessoas desenvolvedoras a presumirem que os custos seratildeo mais baixos jaacute que vocecirc natildeo estaacute pagando por ciclos de servidor natildeo utilizados No entanto os principais provedores de nuvem satildeo bastante experientes em

definir seus modelos de caacutelculo de preccedilo e funccedilotildees sem servidor muito usadas e embora sejam muito uacuteteis para a iteraccedilatildeo raacutepida podem se tornar caros rapidamente quando comparados com servidores dedicados na nuvem (ou locais) Aconselhamos os times a estruturar o CUSTO DE EXECUCcedilAtildeO COMO FUNCcedilAtildeO DE APTIDAtildeO ARQUITETURAL o que significa monitorar o custo de execuccedilatildeo de seus serviccedilos em relaccedilatildeo ao valor entregue Quando vocecirc observar desvios em relaccedilatildeo ao que era esperado ou aceitaacutevel discuta se eacute hora de evoluir sua arquitetura

Durante muito tempo alertamos as pessoas sobre a tentaccedilatildeo de incluir segredos em seus repositoacuterios de coacutedigo-fonte Anteriormente recomendamos desacoplar gerenciamento de segredos do coacutedigo-fonte No entanto agora estamos vendo um conjunto de boas ferramentas que oferecem SEGREDOS COMO SERVICcedilO Com essa abordagem em vez de escrever segredos ou configuraacute-los como parte do ambiente as aplicaccedilotildees os recuperam a partir de um processo separado Ferramentas como Vault da HashiCorp permitem que vocecirc gerencie segredos separadamente da aplicaccedilatildeo e aplique poliacuteticas como rotaccedilatildeo frequente externamente

Embora tenhamos apresentado novos blips nesta ediccedilatildeo do Radar achamos que vale a pena continuar destacando a utilidade da ENGENHARIA DE CAOS DE SEGURANCcedilA Noacutes a movemos para o anel Experimente porque os times que usam essa teacutecnica confiam que as poliacuteticas de seguranccedila implementadas satildeo robustas o suficiente para lidar com os modos comuns de falha de seguranccedila Ainda assim tenha cuidado ao usar essa teacutecnica - natildeo queremos que nossos times se dessensibilizem para essas questotildees

Os dados versionados para anaacutelises reproduziacuteveis em larga escala ou problemas de inteligecircncia de maacutequina nos permitem reproduzir diferentes versotildees de anaacutelises feitas em diferentes conjuntos de dados e paracircmetros e isso tem imenso valor (Dados versionados para anaacutelises reproduziacuteveis)

Quando se trata de anaacutelise de dados em larga escala ou problemas relacionados agrave inteligecircncia de maacutequina a capacidade de reproduzir diferentes versotildees de anaacutelises feitas com diferentes conjuntos de dados e paracircmetros

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 11: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 11

eacute extremamente valioso Para obter uma anaacutelise reproduziacutevel tanto os dados quanto o modelo (incluindo escolha de algoritmo paracircmetros e hiperparacircmetros) precisam ser versionados Os DADOS VERSIONADOS PARA ANAacuteLISES REPRODUZIacuteVEIS satildeo um problema relativamente mais complicado do que os modelos de versatildeo devido ao tamanho dos dados Ferramentas como DVC ajudam na criaccedilatildeo de versotildees de dados ao permitir que os usuaacuterios executem commit e push de arquivos de dados para um repositoacuterio de armazenamento remoto em nuvem usando um fluxo de trabalho parecido com o do git Isso facilita a obtenccedilatildeo de uma versatildeo especiacutefica de dados para reproduzir uma anaacutelise

KATAS DE CAOS eacute uma teacutecnica que nossos times desenvolveram para treinar e aperfeiccediloar pessoas engenheiras de infraestrutura e de plataforma Eles combinam teacutecnicas de Engenharia de Caos ndash que eacute a criaccedilatildeo de falhas e interrupccedilotildees em um ambiente controlado ndash com a abordagem sistemaacutetica de ensino e treinamento Kata Aqui Kata refere-se a padrotildees de coacutedigo que acionam falhas controladas permitindo que as pessoas engenheiras descubram o problema recuperem-se da falha realizem um postmortem e encontrem a causa raiz A execuccedilatildeo repetida dos Katas ajuda as pessoas engenheiras a internalizar suas novas habilidades

Ao criar imagens do Docker para nossas aplicaccedilotildees geralmente temos duas preocupaccedilotildees a seguranccedila e o tamanho da imagem Tradicionalmente usamos ferramentas de varredura de seguranccedila de contecirciner para detectar e corrigir vulnerabilidades e exposiccedilotildees comuns e pequenas distribuiccedilotildees como Alpine Linux para endereccedilar o tamanho da imagem e o desempenho da distribuiccedilatildeo Neste ediccedilatildeo do Radar estamos felizes em abordar a seguranccedila e o tamanho dos contecircineres com uma nova teacutecnica chamada IMAGENS DOCKER SEM DISTRIBUICcedilAtildeO desenvolvida pelo Google Com essa teacutecnica o footprint da imagem eacute reduzido para a aplicaccedilatildeo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional As vantagens dessa teacutecnica incluem reduccedilatildeo do ruiacutedo dos scanners de seguranccedila menor superfiacutecie de ataque agrave seguranccedila sobrecarga reduzida de vulnerabilidades de patch e tamanho de imagem ainda menor para melhor desempenho O Google publicou um conjunto de imagens de contecirciner sem distribuiccedilatildeo para diferentes linguagens Vocecirc pode criar imagens de aplicativos sem distribuiccedilatildeo usando a ferramenta de criaccedilatildeo do Google Bazel que tem

regras para criar contecircineres sem distribuiccedilatildeo ou simplesmente usar Dockerfiles em vaacuterios estaacutegios Observe que os contecircineres sem distribuiccedilatildeo por padratildeo natildeo possuem um shell para depuraccedilatildeo No entanto vocecirc pode encontrar facilmente versotildees de depuraccedilatildeo de contecircineres sem distribuiccedilatildeo online incluindo busybox shell

Ao criar imagens do Docker para nossas aplicaccedilotildees muitas vezes nos preocupamos com duas coisas a seguranccedila e o tamanho da imagem Com essa teacutecnica o footprint da imagem eacute reduzido para o aplicativo seus recursos e dependecircncias de tempo de execuccedilatildeo de linguagem sem a distribuiccedilatildeo do sistema operacional (Imagens Docker sem distribuiccedilatildeo)

A ThoughtWorks como pioneira e liacuteder no espaccedilo aacutegil tem proposto a praacutetica da entrega incremental Tambeacutem aconselhamos muitos clientes que examinem software pronto para uso por meio de uma abordagem ldquoisso pode ser liberado de forma incrementalrdquo Tem sido difiacutecil devido agrave abordagem ldquobig-bangrdquo da maioria dos fornecedores que geralmente envolve a migraccedilatildeo de grandes quantidades de dados Recentemente no entanto tambeacutem obtivemos sucesso ao usar a ENTREGA INCREMENTAL COM COTS (Commercial off-the-shelf) lanccedilando processos de negoacutecios especiacuteficos de forma incremental para subconjuntos menores de usuaacuterios Recomendamos que vocecirc avalie se pode aplicar essa praacutetica ao software do fornecedor de sua escolha para ajudar a reduzir os riscos envolvidos nas entregas big-bang

Jaacute haacute algum tempo recomendamos um maior controle do time de desenvolvimento sobre toda sua stack incluindo a infraestrutura Isso significa maior responsabilidade do proacuteprio time de desenvolvimento para configurar a infraestrutura de maneira segura protegida e complacente Ao adotar estrateacutegias de nuvem a maioria das organizaccedilotildees usa como padratildeo uma configuraccedilatildeo bem controlada e centralizada para reduzir riscos mas isso tambeacutem cria gargalos substanciais de produtividade Uma abordagem alternativa eacute permitir que os times gerenciem sua proacutepria configuraccedilatildeo e usar um ANALISADOR AUTOMATIZADO DA CONFIGURACcedilAtildeO DE INFRAESTRUTURA para garantir que a configuraccedilatildeo seja definida de maneira segura e protegida O

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 12: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 12

Watchmen eacute uma ferramenta interessante criada para prover garantia orientada por regras para configuraccedilotildees de contas da AWS que satildeo controladas e operadas de forma independente pelos times de desenvolvimento O Scout2 eacute outro exemplo desses analisadores para dar suporte agrave adequaccedilatildeo aos princiacutepios de seguranccedila

Em arquiteturas e implementaccedilotildees mais complexas pode natildeo ser imediatamente oacutebvio que uma compilaccedilatildeo dependente do coacutedigo atualmente sendo checked-in estaacute quebrada As pessoas desenvolvedoras que tentam consertar uma compilaccedilatildeo quebrada podem se encontrar trabalhando contra um alvo em movimento jaacute que a compilaccedilatildeo eacute continuamente acionada por dependecircncias upstream VERIFICACcedilOtildeES DE PREacute-COMMIT DE COMPILACcedilAtildeO DOWNSTREAM eacute uma teacutecnica muito simples um script preacute-commit ou preacute-push verifica o status dessas compilaccedilotildees downstream e alerta a pessoa desenvolvedora com antecedecircncia que uma compilaccedilatildeo estaacute quebrada

Conforme grandes organizaccedilotildees transicionam para times mais autocircnomos que satildeo proprietaacuterios e operam seus proacuteprios microsserviccedilos como elas podem assegurar a consistecircncia e compatibilidade necessaacuterias entre esses serviccedilos sem depender de uma infraestrutura de hospedagem centralizada Para trabalhar em conjunto de forma eficiente mesmo microsserviccedilos autocircnomos precisam se alinhar com alguns padrotildees organizacionais Uma MALHA DE SERVICcedilOS oferece descoberta seguranccedila rastreamento monitoramento e processamento de falhas consistentes sem a necessidade de um recurso compartilhado como um API gateway ou um ESB Uma implementaccedilatildeo tiacutepica envolve um processo de proxy reverso leve implantado juntamente com cada processo de serviccedilo possivelmente em um contecirciner separado Esses proxies se comunicam com registros de serviccedilo provedores de identidade agregadores de log e assim por diante A interfuncionalidade e observabilidade satildeo obtidas por meio de uma implementaccedilatildeo compartilhada desse proxy mas em uma diferente instacircncia de execuccedilatildeo Noacutes defendemos uma abordagem descentralizada para a gestatildeo de microsserviccedilos haacute algum tempo e estamos felizes em ver esse padratildeo consistente surgir Os projetos de coacutedigo aberto como Linkerd e Istio continuaratildeo a amadurecer e tornar a malha de serviccedilos ainda mais faacutecil de ser implementada

Quando as organizaccedilotildees escolhem uma distribuiccedilatildeo Hadoop vanilla ou Spark em vez de uma das distribuiccedilotildees de fornecedor elas precisam decidir

como querem provisionar e gerenciar o cluster Ocasionalmente vemos uma INICIALIZACcedilAtildeO MANUAL DE CLUSTERS HADOOP USANDO FERRAMENTAS DE GERENCIAMENTO DE CONFIGURACcedilAtildeO como Ansible Chef e outras Embora essas ferramentas sejam oacutetimas no provisionamento de componentes de infraestrutura imutaacuteveis elas natildeo satildeo muito uacuteteis quando vocecirc precisa gerenciar sistemas dinacircmicos e podem frequentemente levar a um esforccedilo significativo para tentar gerenciar e desenvolver clusters Em vez disso recomendamos o uso de ferramentas como Ambari para provisionar e gerenciar seus clusters Hadoop ou Spark dinacircmicos

Cada vez mais vemos organizaccedilotildees se preparando para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento a fornecedores a todo custo Essa estrateacutegia limita o uso da nuvem aos uacutenicos recursos comuns a todos os provedores de nuvem abrindo matildeo dos benefiacutecios exclusivos dos provedores (Uso geneacuterico da nuvem)

Os principais provedores de nuvem tem se tornado cada vez mais competitivos em seus preccedilos e no ritmo acelerado de lanccedilamento de novos recursos Isso deixa os consumidores em uma posiccedilatildeo difiacutecil ao escolher e se comprometer com um provedor Cada vez mais estamos vendo organizaccedilotildees se prepararem para usar ldquoqualquer nuvemrdquo e evitar o aprisionamento de fornecedor a todo custo Isso eacute claro leva ao USO GENEacuteRICO DA NUVEM Vemos organizaccedilotildees limitando seu uso da nuvem aos uacutenicos recursos comuns em todos os provedores de nuvem ndash perdendo assim os benefiacutecios exclusivos dos provedores Vemos organizaccedilotildees fazendo grandes investimentos em camadas de abstraccedilatildeo desenvolvidas localmente que satildeo muito complexas para serem construiacutedas e caras demais para serem mantidas para permanecerem agnoacutesticas de nuvem O problema do aprisionamento eacute real Recomendamos abordar esse problema com uma estrateacutegia de vaacuterias nuvens que avalia o custo da migraccedilatildeo e o esforccedilo dos recursos de uma nuvem para outra em comparaccedilatildeo com os benefiacutecios do uso de recursos especiacuteficos da nuvem Recomendamos aumentar a portabilidade das cargas de trabalho enviando as aplicaccedilotildees como contecircineres Docker amplamente adotados usando protocolos de identidade e seguranccedila de software livre para migrar facilmente a identidade das cargas de trabalho atraveacutes de uma estrateacutegia de fornecedor com risco proporcional

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 13: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 13

para manter a independecircncia da nuvem somente quando necessaacuterio e usando Polycloud para misturar e combinar serviccedilos de diferentes fornecedores onde isso faz sentido Em resumo mude sua abordagem de um uso geneacuterico da nuvem para uma estrateacutegia sensata de vaacuterias nuvens

Uma das caracteriacutesticas que define uma arquitetura de microsserviccedilos eacute que os componentes e serviccedilos do sistema satildeo organizados em torno de capacidades de negoacutecio Independentemente do tamanho os microsserviccedilos encapsulam um agrupamento significativo de funcionalidade e informaccedilatildeo para permitir a entrega independente de valor de negoacutecio Isso contrasta com abordagens anteriores na arquitetura de serviccedilos que os organizavam de acordo com caracteriacutesticas teacutecnicas Observamos uma seacuterie de empresas adotando uma ARQUITETURA DE MICROSSERVICcedilOS EM CAMADAS que em alguns aspectos eacute uma contradiccedilatildeo Essas empresas recorreram agrave organizaccedilatildeo de serviccedilos principalmente de acordo com uma funccedilatildeo teacutecnica por exemplo APIs de experiecircncia APIs de processo ou APIs do sistema Eacute muito faacutecil atribuir times de tecnologia por camada de modo que entregar qualquer alteraccedilatildeo de negoacutecio importante requer uma coordenaccedilatildeo lenta e cara entre vaacuterios times Noacutes nos prevenimos contra os efeitos dessa divisatildeo por camadas e recomendamos a organizaccedilatildeo de serviccedilos e times essencialmente de acordo com capacidades de negoacutecio

O GERENCIAMENTO DE DADOS MESTRE (MDM) eacute um exemplo claacutessico da soluccedilatildeo empresarial ldquobala de pratardquo ela promete resolver uma classe de problemas aparentemente relacionados de uma soacute vez Por meio da criaccedilatildeo de um uacutenico ponto centralizado de mudanccedila coordenaccedilatildeo teste e implantaccedilatildeo as soluccedilotildees de MDM afetam negativamente a capacidade de uma organizaccedilatildeo de responder agraves mudanccedilas nos negoacutecios As implementaccedilotildees tendem a ser longas e complexas pois as organizaccedilotildees tentam capturar e mapear todos os dados ldquomestrerdquo no MDM integrando a soluccedilatildeo MDM em todos os sistemas consumidores ou produtores

Os microsserviccedilos surgiram como uma das principais teacutecnicas de arquitetura em sistemas modernos baseados em nuvem mas ainda acreditamos que os times devem proceder com cuidado ao fazer essa escolha A INVEJA

DE MICROSSERVICcedilOS tenta os times a complicarem sua arquitetura com muitos serviccedilos simplesmente porque eacute uma opccedilatildeo de arquitetura moderna Plataformas como o Kubernetes facilitam muito a implementaccedilatildeo de conjuntos complexos de microsserviccedilos e os fornecedores estatildeo empurrando suas soluccedilotildees para gerenciamento de microsserviccedilos potencialmente influenciando times a seguirem nesse caminho Eacute importante lembrar que os microsserviccedilos trocam a complexidade de desenvolvimento para complexidade operacional e exigem uma base soacutelida de testes automatizados entrega contiacutenua e cultura de DevOps

Em vaacuterias ocasiotildees vimos designs de sistema que usam EVENTOS DE SOLICITACcedilAtildeO-RESPOSTA EM FLUXOS DE TRABALHO VOLTADOS AO USUAacuteRIO Nesses casos a interface do usuaacuterio eacute bloqueada ou o usuaacuterio precisa aguardar o carregamento de uma nova paacutegina ateacute que uma mensagem de resposta correspondente a uma mensagem de solicitaccedilatildeo seja recebida Os principais motivos citados para designs como este satildeo o desempenho ou uma abordagem unificada para comunicaccedilatildeo entre back-ends para casos de uso siacutencronos e assiacutencronos Acreditamos que o aumento da complexidade ndash em desenvolvimento testes e operaccedilotildees ndash supera em muito o benefiacutecio de ter uma abordagem unificada e sugerimos fortemente o uso de solicitaccedilotildees HTTP siacutencronas quando a comunicaccedilatildeo siacutencrona entre os serviccedilos de back-end for necessaacuteria Quando bem implementada a comunicaccedilatildeo usando HTTP raramente eacute um gargalo em um sistema distribuiacutedo

A automaccedilatildeo de processos roboacuteticos (RPA) eacute uma parte essencial de muitas iniciativas de transformaccedilatildeo digital pois promete proporcionar reduccedilatildeo de custos sem a necessidade de modernizar a arquitetura e os sistemas subjacentes O problema com essa abordagem que se concentrar apenas na automaccedilatildeo de processos de negoacutecios sem abordar os sistemas ou recursos de software subjacentes eacute que isso pode dificultar ainda mais a alteraccedilatildeo dos sistemas subjacentes introduzindo acoplamentos adicionais Isso torna ainda mais difiacutecil qualquer tentativa futura de endereccedilar o cenaacuterio de TI legado Poucos sistemas podem se dar ao luxo de ignorar mudanccedilas e portanto os esforccedilos de RPA precisam ser associados a estrateacutegias apropriadas de modernizaccedilatildeo de sistemas legados

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 14: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 14

As necessidades de gerenciamento de metadados estatildeo crescendo O Atlas fornece a capacidade de modelar tipos de metadados classificar ativos de dados rastrear linhagem de dados e ativar a descoberta de dados Isso se ajusta agraves necessidades de governanccedila de dados das empresas (Apache Atlas)

Com as crescentes e diversas necessidades de dados das empresas surge uma necessidade crescente de gerenciamento de metadados APACHE ATLAS eacute uma estrutura de gerenciamento de metadados que atende agraves necessidades de governanccedila de dados das empresas O Atlas fornece recursos para modelar tipos de metadados classificar ativos rastrear a linhagem e habilitar a descoberta de dados No entanto ao criar uma plataforma de gerenciamento de metadados precisamos ter cuidado para natildeo repetir os erros do gerenciamento de dados mestre

Colocamos a AWS inicialmente no anel Adote haacute sete anos e a abrangecircncia a profundidade e a confiabilidade

de seus serviccedilos melhoraram em ritmo acelerado desde entatildeo No entanto estamos movendo a AWS agora para o anel Experimente natildeo por deficiecircncias em sua oferta mas porque seus concorrentes GCP e Azure amadureceram consideravelmente e a escolha de um provedor de nuvem tornou-se cada vez mais complexa Noacutes reservamos o Adote para quando vemos um favorito oacutebvio em um campo Por muitos anos a AWS foi a escolha padratildeo mas agora sentimos que as organizaccedilotildees devem fazer uma escolha equilibrada entre provedores de nuvem que leve em conta sua footprint geograacutefica e regulatoacuteria seu alinhamento estrateacutegico com provedores (ou a falta dele) e eacute claro a ligaccedilatildeo entre suas necessidades mais importantes e os produtos que diferenciam os provedores de nuvem

A Microsoft aprimorou consistentemente o AZURE e hoje natildeo natildeo haacute muita distinccedilatildeo na experiecircncia principal de nuvem fornecida pelos principais provedores de nuvem ndash Amazon Google e Microsoft Os provedores de nuvem parecem concordar e buscam se diferenciar em outras aacutereas como recursos serviccedilos e estrutura de custos A Microsoft eacute a provedora que demonstra interesse real nos requisitos legais das empresas europeacuteias Ela possui uma estrateacutegia diferenciada e

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

PLATAFORMASADOTE

EXPERIMENTE26 Apache Atlas NOVO27 AWS28 Azure29 Contentful30 Google Cloud Platform31 VPC compartilhada NOVO32 TICK Stack

AVALIE33 Azure DevOps NOVO34 CockroachDB NOVO35 Debezium NOVO36 Glitch NOVO37 Google Cloud Dataflow NOVO38 gVisor NOVO39 IPFS NOVO40 Istio NOVO41 Knative NOVO42 Pulumi NOVO43 Quorum NOVO44 Resinio NOVO45 Rook NOVO46 SPIFFE NOVO

EVITE47 Pacotes com fome de dados NOVO48 Plataformas de baixo coacutedigo NOVO

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 15: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 15

plausiacutevel que inclui ofertas exclusivas como Azure Alemanha e Azure Stack e que daacute alguma certeza agraves empresas europeacuteias se antecipando ao GDPR e possiacuteveis mudanccedilas legislativas nos Estados Unidos

Sistemas de gerenciamento de conteuacutedo headless (CMSes) estatildeo se tornando um componente comum de plataformas digitais CONTENTFUL eacute um CMS headless moderno que nossos times integraram com ecircxito em seus fluxos de desenvolvimento Gostamos particularmente de sua abordagem API primeiro e da implementaccedilatildeo de CMS como coacutedigo Ele suporta primitivas poderosas de modelagem de conteuacutedo como coacutedigo e scripts de evoluccedilatildeo de modelo de conteuacutedo que permitem trataacute-lo como outros esquemas de armazenamento de dados e aplicar praacuteticas de design de banco de dados evolucionaacuterio ao desenvolvimento do CMS Outros recursos notaacuteveis que gostamos incluem a adiccedilatildeo de duas CDNs por padratildeo para entregar ativos de miacutedia e documentos JSON bom suporte para localizaccedilatildeo e a capacidade ndash embora com algum esforccedilo ndash de integraccedilatildeo com Auth0

Como a GOOGLE CLOUD PLATFORM (GCP) cresceu em termos de regiotildees geograacuteficas disponiacuteveis e maturidade dos serviccedilos clientes em todo o mundo agora podem consideraacute-lo seriamente para sua estrateacutegia na nuvem Em algumas aacutereas a GCP atingiu paridade de funcionalidades com sua principal concorrente Amazon Web Services enquanto em outras aacutereas se diferenciou mdash de forma notaacutevel com plataformas de aprendizagem de maacutequina acessiacuteveis ferramentas de engenharia de dados e Kubernetes operaacutevel como uma soluccedilatildeo de serviccedilo (GKE) Na praacutetica nossos times soacute tecircm elogios agrave experiecircncia de desenvolvimento trabalhando com as ferramentas e APIs da GCP

Um padratildeo recomendado eacute usar uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega A VPC compartilhado torna organizaccedilotildees projetos VPCs e sub-redes entidades de primeira classe em configuraccedilotildees de rede ndash isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes (VPC compartilhada)

Agrave medida que ganhamos mais experiecircncia com a nuvem puacuteblica em organizaccedilotildees grandes e pequenas surgiram alguns padrotildees Um deles eacute uma rede de nuvem privada virtual gerenciada no niacutevel organizacional e dividida em sub-redes menores sob o controle de cada time de entrega Isso estaacute intimamente relacionado agrave ideacuteia de configuraccedilatildeo de muacuteltiplas contas na nuvem e ajuda a particcedilatildeo de infraestrutura alinhada com limites do time Depois de realizar muitas vezes essa configuraccedilatildeo explicitamente usando VPCs sub-redes grupos de seguranccedila e NACLs gostamos muito da noccedilatildeo de VPC COMPARTILHADA do Google A VPC compartilhada transforma organizaccedilotildees projetos e sub-redes em entidades de primeira classe em configuraccedilotildees de rede As VPCs podem ser gerenciadas por administradores de uma organizaccedilatildeo que podem delegar a administraccedilatildeo de sub-redes aos projetos Os projetos podem ser explicitamente associados a sub-redes na VPC Isso simplifica a configuraccedilatildeo e torna a seguranccedila e o controle de acesso mais transparentes

TICK STACK eacute uma plataforma composta por componentes de coacutedigo aberto que facilita a coleta armazenamento geraccedilatildeo de graacuteficos e alertas de dados de seacuteries temporais como meacutetricas e eventos Os componentes da TICK Stack satildeo Telegraf um agente servidor para coletar e reportar meacutetricas InfluxDB um banco de dados de seacuteries temporais de alto desempenho Chronograf uma interface de usuaacuterio para a plataforma e Kapacitor um mecanismo de processamento de dados que pode processar transmitir e agrupar dados do InfluxDB Ao contraacuterio de Prometheus que eacute baseado no modelo Pull TICK Stack se baseia no modelo Push de coleta de dados O coraccedilatildeo do sistema eacute o componente InfluxDB que eacute um dos melhores bancos de dados de seacuteries temporais Essa stack eacute apoiada pelo InfluxData e embora seja necessaacuteria a versatildeo corporativa para recursos como clusterizaccedilatildeo de bancos de dados ainda eacute uma boa opccedilatildeo para monitoramento Estamos usando em alguns locais em produccedilatildeo e tivemos boas experiecircncias

O AZURE DEVOPS Services inclui um conjunto de serviccedilos gerenciados como repositoacuterios Git hospedados pipelines CI e CD e repositoacuterio de artefatos O Azure DevOps Services substiuiu o Visual Studio Team Services Tivemos uma boa experiecircncia ao iniciar projetos rapidamente com os serviccedilos do Azure DevOps ndash gerenciando construindo e implantando aplicaccedilotildees para o Azure Tambeacutem nos deparamos com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 16: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 16

alguns desafios ndash como a falta de suporte completo para pipelines de CI e CD como coacutedigo lentidatildeo no tempo de inicializaccedilatildeo de agente de compilaccedilatildeo separaccedilatildeo de compilaccedilatildeo e implantaccedilatildeo em diferentes pipelines ndash e experimentamos algumas paralisaccedilotildees Esperamos que o Azure DevOps Services melhore com o tempo para fornecer uma boa experiecircncia de desenvolvimento ao hospedar aplicaccedilotildees no Azure com uma experiecircncia sem fricccedilotildees na integraccedilatildeo com outros serviccedilos do Azure

Inspirado no relatoacuterio do Google sobre Spanner ndash seu banco de dados distribuiacutedo baseado em reloacutegios atocircmicos ndash o CockroachDB eacute uma alternativa de coacutedigo aberto que fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado ainda suportando SQL (CockroachDB)

COCKROACHDB eacute um banco de dados distribuiacutedo de coacutedigo aberto inspirado pelo relatoacuterio Spanner o banco de dados distribuiacutedo do Google No CockroachDB os dados satildeo automaticamente divididos em intervalos normalmente de 64MB e distribuiacutedos entre noacutes no cluster Cada intervalo tem um grupo de consenso e pelo fato da plataforma usar o algoritmo de consenso Raft os dados satildeo sempre sincronizados Com seu design uacutenico o CockroachDB fornece transaccedilotildees distribuiacutedas e particionamento geolocalizado suportando ainda SQL Ao contraacuterio do Spanner que se baseia em TrueTime com reloacutegio atocircmico para linearizabilidade o CockroachDB usa NTP para sincronizaccedilatildeo do reloacutegio e fornece serializaccedilatildeo como niacutevel de isolamento padratildeo Se vocecirc estiver trabalhando com dados estruturados que se encaixam em um uacutenico noacute escolha um banco de dados relacional tradicional No entanto se seus dados precisam ser escalados nos noacutes ser consistentes e sobreviver a falhas recomendamos que vocecirc analise com atenccedilatildeo o CockroachDB

DEBEZIUM eacute uma plataforma de change data capture (CDC) que pode transmitir alteraccedilotildees de banco de dados como toacutepicos do Kafka O CDC eacute uma teacutecnica popular com vaacuterios usos incluindo a replicaccedilatildeo de dados para outros bancos alimentaccedilatildeo de sistemas analiacuteticos extraccedilatildeo de microsserviccedilos de monolitos e invalidaccedilatildeo de caches Estamos sempre agrave procura de ferramentas ou plataformas nessa aacuterea (falamos sobre

Bottled Water em uma ediccedilatildeo anterior) e Debezium eacute uma excelente escolha A plataforma usa uma abordagem de CDC baseada em log o que significa que ela reage a alteraccedilotildees nos arquivos de log do banco de dados Debezium usa o Kafka Connect que a torna altamente escalaacutevel e resiliente a falhas e possui conectores CDC para vaacuterios bancos de dados incluindo Postgres Mysql e MongoDB Estamos usando em alguns projetos e tem funcionado muito bem para noacutes

GLITCH um ambiente de desenvolvimento colaborativo online que permite copiar e adaptar (ou ldquoremixarrdquo) aplicaccedilotildees web existentes ou criar as suas proacuteprias aplicaccedilotildees com facilidade despertou nosso interesse Enraizado no ethos ldquotinkererrdquo Glitch eacute ideal para pessoas aprendendo a programar mas eacute capaz de suportar aplicaccedilotildees mais complexas O foco principal eacute em JavaScript e Nodejs mas haacute suporte embora limitado para outras linguagens Com ediccedilatildeo em tempo real integrada hospedagem compartilhamento e controle de versatildeo de coacutedigo de forma instantacircnea Glitch oferece uma visatildeo inovadora e diferenciada de programaccedilatildeo colaborativa

GOOGLE CLOUD DATAFLOW eacute uacutetil em cenaacuterios ETL tradicionais para ler dados de uma fonte transformando-os e em seguida armazenando-os em um dissipador com configuraccedilotildees e dimensionamento gerenciados pelo Dataflow O Dataflow suporta Java Python e Scala e fornece empacotadores para conexotildees com vaacuterios tipos de fontes de dados No entanto a versatildeo atual natildeo permite adicionar outras bibliotecas o que pode tornaacute-lo inadequado para determinadas manipulaccedilotildees de dados Natildeo eacute possiacutevel tambeacutem alterar o DAG do fluxo de dados dinamicamente Portanto se seu ETL tiver fluxos condicionais de execuccedilatildeo com base em paracircmetros talvez vocecirc natildeo consiga usar o fluxo de dados sem soluccedilotildees alternativas

GVISOR eacute um kernel do espaccedilo de usuaacuterio para contecircineres Ele limita a superfiacutecie do kernel de hospedagem acessiacutevel agrave aplicaccedilatildeo sem eliminar o acesso a todos os recursos esperados Ao contraacuterio das tecnologias de sandbox existentes como hardware virtualizado (KVM e Xen) ou execuccedilatildeo baseada em regras (seccomp SELinux e AppArmor) o gVisor adota uma abordagem distinta para o sandboxing de contecircineres ao interceptar chamadas de sistema da aplicaccedilatildeo e atuar como kernel convidado sem a necessidade de traduccedilatildeo atraveacutes de hardware virtualizado O gVisor inclui uma Open Container Initiative (OCI) chamada runsc que se integra com

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 17: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 17

Docker e fornece suporte experimental a Kubernetes O gVisor eacute um projeto relativamente novo e recomendamos que ele seja avaliado para o panorama de seguranccedila do seu contecirciner

Na maioria dos casos blockchain natildeo eacute o lugar certo para armazenar um arquivo blob (imagem ou aacuteudio por exemplo) Quando as pessoas desenvolvem aDApp uma opccedilatildeo eacute colocar arquivos blob em algum armazenamento de dados centralizado o que geralmente sinaliza falta de confianccedila Outra opccedilatildeo eacute armazenaacute-los no InterPlanetary File System (IPFS) que eacute um sistema de arquivos content addressed ponto-a-ponto e com versionamento Ele foi projetado para distribuir grandes volumes de dados com alta eficiecircncia e removidos de qualquer autoridade centralizada Os arquivos satildeo armazenados em pontos que natildeo precisam confiar uns nos outros O IPFS manteacutem todas as versotildees de um arquivo para que vocecirc nunca perca arquivos importantes Noacutes vemos o IPFS como um bom complemento para a tecnologia blockchain Aleacutem de sua aplicaccedilatildeo com blockchain o IPFS tem uma meta ambiciosa de descentralizar a infraestrutura da Internet

Ao criar e operar um ecossistema de microsserviccedilos uma das primeiras perguntas a responder eacute como implementar funcionalidades transversais como descoberta de serviccedilo seguranccedila de serviccedilo-a-serviccedilo e de origem-a-serviccedilo observabilidade (incluindo telemetria e rastreamento distribuiacutedo) rolling releases e resiliecircncia Nos uacuteltimos dois anos nossa resposta padratildeo a essa pergunta foi usar uma teacutecnica de malha de serviccedilo Uma malha de serviccedilos oferece a implementaccedilatildeo desses recursos transversais como uma camada de infraestrutura configurada por coacutedigo As configuraccedilotildees de poliacuteticas podem ser consistentemente aplicadas a todo o ecossistema de microsserviccedilos imposta tanto no traacutefego interno agrave malha como externo (atraveacutes do proxy de malha como um gateway) bem como no traacutefego em cada serviccedilo (atraveacutes do mesmo proxy de malha como um contecirciner de sidecar) Apesar de acompanharmos de perto o progresso de diferentes projetos de malhas de serviccedilos de coacutedigo aberto como Linkerd usamos com sucesso ISTIO em produccedilatildeo com um modelo operacional surpreendentemente faacutecil de configurar

Como pessoas desenvolvedoras de aplicaccedilotildees gostamos de nos concentrar na soluccedilatildeo de problemas centrais de negoacutecios deixando que a plataforma subjacente lide com as tarefas chatas poreacutem difiacuteceis de implantar escalar e gerenciar aplicaccedilotildees Embora

a arquitetura sem servidor seja um passo nessa direccedilatildeo a maioria das ofertas populares estaacute vinculada a uma implementaccedilatildeo proprietaacuteria o que significa dependecircncia de fornecedores KNATIVE tenta resolver isso por ser uma plataforma sem servidor de coacutedigo aberto que se integra bem com o popular ecossistema Kubernetes Com Knative vocecirc pode modelar caacutelculos sob demanda em uma estrutura suportada de sua escolha (incluindo Ruby on Rails Django e Spring entre outros) subscrever entregar e gerenciar eventos integrar com ferramentas conhecidas de CI e CD e construir contecircineres a partir da fonte Fornecendo um conjunto de componentes de middleware para criar aplicaccedilotildees centradas na fonte e baseadas em contecirciner que podem ser escaladas elasticamente Knative eacute uma plataforma atraente que merece ser avaliada para suas necessidades sem servidor

Concentrando-se fortemente nas arquiteturas nativas da nuvem Pulumi eacute uma ferramenta de automaccedilatildeo de infraestrutura que se destaca ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go (Pulumi)

PULUMI um estreante promissor na automaccedilatildeo de infraestrutura em nuvem tem nos interessado muito Pulumi se distingue ao permitir que as configuraccedilotildees sejam escritas em TypeScriptJavaScript Python e Go mdash sem necessidade de YAML O Pulumi eacute fortemente focado em arquiteturas nativas da nuvem mdash incluindo contecircineres funccedilotildees sem servidor e serviccedilos de dados mdash e fornece um bom suporte para Kubernetes

Ethereum eacute o principal ecossistema de desenvolvimento de tecnologia blockchain Temos soluccedilotildees emergentes visando disseminar essa tecnologia em ambientes empresariais que normalmente exigem permissatildeo de rede e privacidade de transaccedilatildeo aleacutem de maior taxa de transferecircncia e menor latecircncia QUORUM eacute uma dessas soluccedilotildees Originalmente desenvolvida por JP Morgan Quorum se posiciona como ldquouma versatildeo do Ethereum com foco em empresasrdquo Ao contraacuterio do noacute Hyperledger Burrow que cria uma nova maacutequina virtual Ethereum (EVM) Quorum faz o fork do coacutedigo a partir do cliente oficial do Ethereum permitindo que ele evolua juntamente com o Ethereum Embora mantenha a maioria das funcionalidades do ledger do Ethereum Quorum altera o protocolo de consenso de

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 18: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 18

prova de trabalho (PoW) para outros mais eficientes aleacutem de adicionar suporte a transaccedilotildees privadas Com Quorum pessoas desenvolvedoras podem aproveitar seu conhecimento da Ethereum usando por exemplo contratos Solidity e Truffle para construir aplicaccedilotildees blockchain empresariais No entanto com base em nossa experiecircncia o Quorum ainda natildeo estaacute pronto para empresas Ele natildeo tem por exemplo controle de acesso para contratos privados natildeo funciona bem com balanceadores de carga e tem apensas suporte parcial a bancos de dados o que levaraacute a uma sobrecarga significativa de implantaccedilatildeo e design Recomendamos que vocecirc tenha cautela ao implementar Quorum com atenccedilatildeo ao progresso futuro dessa soluccedilatildeo

RESINIO eacute uma plataforma de Internet das Coisas (IoT) que faz uma coisa e faz bem implanta contecircineres em dispositivos As pessoas desenvolvedoras usam um portal de software como serviccedilo (SaaS) para gerenciar dispositivos e atribuir aplicaccedilotildees definidas por Dockerfiles a eles A plataforma pode construir contecircineres para vaacuterios tipos de hardware e implanta as imagens remotamente Para os contecircineres o Resinio usa balena um mecanismo baseado no framework Moby criado por Docker A plataforma ainda estaacute em desenvolvimento tem algumas arestas natildeo aparadas e natildeo possui alguns recursos (por exemplo trabalhar com registros privados) mas o conjunto de recursos atual incluindo conexatildeo ssh em um contecirciner em um dispositivo do portal da Web aponta para um futuro promissor

ROOK eacute um orquestrador de armazenamento em nuvem nativa de coacutedigo aberto para Kubernetes Rook se integra com Ceph e traz os sistemas de armazenamento File Block e Object para o cluster do Kubernetes executando-os perfeitamente bem junto a outras aplicaccedilotildees e serviccedilos que estatildeo consumindo o armazenamento Ao usar os operadores do Kubernetes Rook orquestra o Ceph no plano de controle e fica fora do caminho dos dados entre as aplicaccedilotildees e o Ceph Armazenamento eacute um dos componentes importantes da computaccedilatildeo em nuvem nativa e acreditamos que Rook embora ainda seja um projeto em fase de incubaccedilatildeo na CNCF nos coloca um passo mais perto da auto-suficiecircncia e portabilidade entre implantaccedilotildees local e na nuvem puacuteblica

Tornar elementos-chave da plataforma inovadora e de grande escala do Google disponiacuteveis como ofertas de coacutedigo aberto parece ter se tornado uma tendecircncia Da mesma forma que o HBASE utilizou BigTable e o Kubernetes utilizou Borg o SPIFFE agora estaacute se baseando no LOAS do Google para dar vida a um conceito criacutetico de nuvem nativa chamado identidade de carga de trabalho Os padrotildees SPIFFE satildeo respaldados pelo OSS SPIFFE Runtime Environment (SPIRE) que fornece automaticamente identidades criptograficamente verificaacuteveis para cargas de trabalho de software Embora o SPIRE ainda natildeo esteja pronto para uso em produccedilatildeo vemos enorme valor em uma forma independente de plataforma de fazer fortes asserccedilotildees de identidade entre cargas de trabalho em infraestruturas de TI distribuiacutedas e modernas SPIRE suporta muitos casos de uso incluindo conversatildeo de identidade autenticaccedilatildeo de cliente OAuth ldquocriptografia em todos os lugaresrdquo do mTLS e observabilidade da carga de trabalho O Istio usa SPIFFE por padratildeo

PACOTES COM FOME DE DADOS satildeo soluccedilotildees que exigem a absorccedilatildeo de dados em si proacuteprios para funcionar Em alguns casos eles podem ateacute exigir que se tornem ldquomestresrdquo destes dados Depois que os dados passam a ser controlados pelo pacote esse software se torna a uacutenica maneira de atualizar alterar ou acessar os dados O pacote que tem fome de dados pode resolver um problema comercial especiacutefico como ERP No entanto as ldquodemandas de dadosrdquo de estoque ou financcedilas que surgem em uma organizaccedilatildeo geralmente exigiratildeo integraccedilatildeo e alteraccedilotildees complexas em sistemas que estatildeo fora do escopo original

PLATAFORMAS DE BAIXO COacuteDIGO usam interfaces de usuaacuterio e configuraccedilatildeo graacuteficas para criar aplicaccedilotildees Infelizmente os ambientes de baixo coacutedigo satildeo promovidos com a ideia de que vocecirc natildeo precisa mais de times de desenvolvimento com habilidades especiacuteficas Tais sugestotildees ignoram o fato de que escrever coacutedigo eacute apenas uma pequena parte do que precisa acontecer para criar software de alta qualidade ndash praacuteticas como controle de versatildeo testes e design meticuloso de soluccedilotildees satildeo tatildeo importantes quanto Embora essas plataformas tenham seus usos sugerimos abordaacute-las com cautela especialmente quando elas satildeo acompanhadas de alegaccedilotildees extravagantes de menor custo e maior produtividade

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 19: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 19

Azure Container Service Engine (ACS-ENGINE) eacute um gerador de templates para o Azure Resource Manager (ARM) As configuraccedilotildees necessaacuterias do cluster satildeo definidas em um arquivo JSON o acs-engine lecirc essas definiccedilotildees de cluster e gera vaacuterios arquivos que podem ser consumido pelo ARM A ferramenta tambeacutem oferece flexibilidade para escolher diferentes orquestradores incluindo Kubernetes DCOS OpenShift Swarm mode e Swarm ndash e para configurar recursos e agentes do cluster Temos usado o acs-engine em diversos projetos e o recomendamos para gerenciamento de clusters no Azure Container Service

Temos visto avanccedilos significativos na integraccedilatildeo de ferramentas de seguranccedila com processos modernos de entrega de software ARCHERY eacute uma ferramenta de coacutedigo aberto com uma comunidade ativa que estaacute fazendo um bom trabalho ao reunir uma coleccedilatildeo de outras ferramentas incluindo Zap Projetado principalmente para aplicativos Web o Archery facilita a integraccedilatildeo de ferramentas de seguranccedila em seus

sistemas de compilaccedilatildeo e implantaccedilatildeo Seus paineacuteis tambeacutem permitem rastrear vulnerabilidades bem como realizar verificaccedilotildees de aplicaccedilotildees e de rede

ARCHUNIT eacute uma biblioteca de testes Java para checagem de caracteriacutesticas de arquitetura como dependecircncias de pacotes e classes verificaccedilatildeo de anotaccedilotildees e ateacute mesmo consistecircncia de camadas Gostamos do fato de ser executada como teste de unidade dentro de sua configuraccedilatildeo de teste existente embora suporte apenas arquiteturas baseadas em Java O conjunto de testes de ArchUnit pode ser incorporado em um ambiente de CI ou em um pipeline de implantaccedilatildeo facilitando a implementaccedilatildeo de funccedilotildees de aptidatildeo em uma arquitetura evolucionaacuteria

A execuccedilatildeo de testes de ponta a ponta pode apresentar desafios como a longa duraccedilatildeo do processo de execuccedilatildeo a desorganizaccedilatildeo de alguns testes e a correccedilatildeo de falhas em integraccedilatildeo contiacutenua

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

FERRAMENTASADOTE

EXPERIMENTE49 acs-engine NOVO50 Archery NOVO51 ArchUnit52 Cypress53 git-secrets NOVO54 Headless Firefox55 LocalStack NOVO56 Mermaid NOVO57 Prettier NOVO58 Rider NOVO59 Snyk NOVO60 Ambientes de desenvolvimento de UI NOVO61 Visual Studio Code62 VS Live Share NOVO

AVALIE63 Bitrise NOVO64 Codefresh NOVO65 Grafeas NOVO66 Heptio Ark NOVO67 Jaeger NOVO68 kube-bench NOVO69 Ocelot NOVO70 Optimal Workshop NOVO71 Stanford CoreNLP NOVO72 Terragrunt NOVO73 TestCafe NOVO74 Traefik NOVO75 Wallabyjs NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 20: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 20

ao executar testes no modo headless Nossos times tiveram experiecircncias muito boas com CYPRESS resolvendo problemas comuns como falta de desempenho e longo tempo de espera para carregar respostas e recursos Cypress eacute uma ferramenta uacutetil que ajuda pessoas desenvolvedoras a criar testes de ponta a ponta e registra todas as etapas do teste como viacutedeo em um arquivo MP4 para facilitar a identificaccedilatildeo de erros

Uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais em um repositoacuterio git verificando tambeacutem todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico (git-secrets)

A seguranccedila continua a ser primordial e a verificaccedilatildeo negligente de credenciais e outros segredos no controle de coacutedigos fonte eacute um importante vetor de ataque GIT-SECRETS eacute uma ferramenta simples que impede que vocecirc faccedila commit de senhas e outras informaccedilotildees confidenciais a um repositoacuterio git Ela tambeacutem pode verificar todas as revisotildees histoacutericas antes de tornar um repositoacuterio puacuteblico caso vocecirc queira garantir que nunca fez o check-in acidental de uma credencial O git-secrets vem com suporte integrado para chaves e credenciais comuns da AWS e pode ser configurado rapidamente para outros provedores tambeacutem

HEADLESS FIREFOX tem o mesmo niacutevel de maturidade do Headless Chrome para testes de front-end Semelhante ao Headless Chrome com o Firefox no modo headless agora podemos aproveitar os testes do navegador sem os componentes visiacuteveis da interface de usuaacuterio (UI) executando o conjunto de testes de UI com muito mais rapidez

Um dos desafios de usar serviccedilos em nuvem eacute poder desenvolver e testar localmente usando esses serviccedilos LOCALSTACK resolve esse problema para AWS ao fornecer implementaccedilotildees locais de test doubles para uma ampla variedade de serviccedilos da AWS incluindo S3 Kinesis Dynamodb e Lambda Ela se baseia em ferramentas existentes como o Kinesalite Dynalite e Moto e adiciona processos isolados e funcionalidade de injeccedilatildeo de erros LocalStack eacute muito faacutecil de usar e vem com um runner JUnit Moto e uma extensatildeo JUnit 5 Estamos usando em alguns de nossos projetos e ficamos com boa impressatildeo

MERMAID permite gerar diagramas a partir de uma linguagem de marcaccedilatildeo com markdown Criada pela necessidade de simplificar a documentaccedilatildeo Mermaid tornou-se um ecossistema maior com plugins para Confluence Visual Studio Code e Jekyll para citar alguns Para entender como funciona vocecirc pode usar o Live Editor no GitHub Mermaid tambeacutem possui uma conveniente interface de linha de comando que permite gerar arquivos SVG PNG e PDF como saiacuteda dos arquivos de definiccedilatildeo Temos usado Mermaid em muitos projetos e gostamos da simplicidade de descrever graacuteficos e fluxogramas com markdown e armazenar os arquivos de definiccedilatildeo com o repositoacuterio de coacutedigo

PRETTIER eacute um formador de coacutedigo automatizado para JavaScript (com crescente suporte para outras linguagens) Ao impor seu proacuteprio estilo de formataccedilatildeo opinativa aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de pessoas desenvolvedoras tanto na formataccedilatildeo quanto em debates desnecessaacuterios no time sobre o estilo de coacutedigo Ainda que vocecirc discorde das escolhas de estilo impostas pelo Prettier achamos que os benefiacutecios para o time geralmente superam os pequenos problemas de estilo Prettier pode ser usado com um hook preacute-commit ou com um plugin IDE Como acontece com qualquer formatador uma reformataccedilatildeo uacutenica de sua base de coacutedigo pode confundir seu histoacuterico de controle de versatildeo mas consideramos isso uma desvantagem secundaacuteria Noacutes particularmente gostamos da maneira como Prettier inverte a abordagem baseada em linter e a exemplo de gofmt em vez de validar seu coacutedigo ele garante que seu coacutedigo sempre seraacute vaacutelido

Prettier eacute um formatador de coacutedigo automatizado para JavaScript que aumenta a consistecircncia e a legibilidade e reduz o esforccedilo de desenvolvimento na formataccedilatildeo e os debates desnecessaacuterios sobre estilo de coacutedigo (Prettier)

Incluiacutemos o Visual Studio Code no Radar desde 2015 mas ele natildeo eacute mais a uacutenica novidade em IDEs multiplataforma NET Core Recentemente o RIDER que faz parte da plataforma IDEA desenvolvida pela JetBrains ganhou adoccedilatildeo especialmente por quem se acostumou com a velocidade e destreza fornecidas pelo ReSharper que impulsiona a refatoraccedilatildeo em Rider O Rider no entanto faz mais do que o ReSharper para

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 21: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 21

levar a plataforma IDEA completa ao NET e aumentar a produtividade de quem estaacute desenvolvendo Independentemente da sua plataforma preferida vale a pena explorar o Rider uma vez que atualmente ele leva vantagem na produtividade em relaccedilatildeo ao Visual Studio Code Tambeacutem eacute oacutetimo ver o ecossistema funcionando bem jaacute que a competiccedilatildeo garante que essas ferramentas continuem melhorando

SNYK te ajuda a encontrar corrigir e monitorar vulnerabilidades conhecidas em aacutervores de dependecircncia npm Ruby Python Scala Golang NET PHP Java e Docker Quando adicionado ao seu pipeline de compilaccedilatildeo Snyk monitora e testa continuamente a aacutervore de dependecircncias de bibliotecas em relaccedilatildeo a um banco de dados de vulnerabilidades hospedado e sugere a atualizaccedilatildeo miacutenima de versatildeo de dependecircncia direta necessaacuteria para a correccedilatildeo

Agrave medida que mais times adotam DesignOps as praacuteticas e ferramentas nessa aacuterea amadurecem tambeacutem Muitos de nossos times agora trabalham com o que poderiacuteamos chamar de AMBIENTES DE DESENVOLVIMENTO DE UI que fornecem um ambiente abrangente para iterar rapidamente os componentes de interface de usuaacuterio concentrando-se na colaboraccedilatildeo entre designers de experiecircncia do usuaacuterio e pessoas desenvolvedoras Agora temos algumas opccedilotildees neste espaccedilo Storybook react-styleguidist Compositor e MDX Vocecirc pode usar essas ferramentas de forma autocircnoma no desenvolvimento de bibliotecas de componentes ou de sistemas de design bem como incorporadas em um projeto de aplicaccedilatildeo da Web Em vez de criar o aplicativo aleacutem de um BFF e serviccedilos para adicionar um recurso a um componente vocecirc pode iniciar o servidor dev do Storybook

VISUAL STUDIO CODE eacute o editorIDE gratuito da Microsoft disponiacutevel para vaacuterias plataformas Tivemos uma boa experiecircncia ao usaacute-lo para desenvolvimento front-end com React TypeScript e linguagens de back-end como GoLang sem precisar alternar entre diferentes editores O conjunto de ferramentas o suporte a linguagens e as extensotildees do Visual Studio Code continuam crescendo e melhorando Gostariacuteamos de destacar especificamente o VS Live Share para colaboraccedilatildeo em tempo real e pareamento remoto Embora projetos complexos em linguagens estaticamente tipadas como Java NET ou C ++ provavelmente encontrem melhor suporte em IDEs

mais maduros da Microsoft ou Jetbrains acreditamos que o Visual Studio Code estaacute se tornando cada vez mais uma ferramenta de escolha entre times de infraestrutura e desenvolvimento front-end

A colaboraccedilatildeo em tempo real com VS Live Share facilita o emparelhamento remoto Particularmente noacutes gostamos de que isso permita agraves pessoas desenvolvedoras colaborar usando seus proacuteprios editores preacute-configurados (VS Live Share)

VS LIVE SHARE eacute um conjunto de extensotildees para Visual Studio Code e Visual Studio A colaboraccedilatildeo em tempo real para ediccedilatildeo e depuraccedilatildeo de coacutedigo chamadas de voz compartilhamento de terminal e exposiccedilatildeo de portas locais reduziram alguns dos obstaacuteculos que encontrariacuteamos caso contraacuterio ao parear remotamente Em particular gostamos do fato de o Live Share permitir que pessoas desenvolvedoras colaborem umas com as outras enquanto continuam usando seu editor preacute-configurado que inclui temas mapas de teclas e extensotildees

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente para um pipeline que vai dos repositoacuterios de coacutedigo-fonte ateacute as lojas de aplicativos Essa ferramenta faacutecil de configurar e especiacutefica de domiacutenio pode reduzir a complexidade e a sobrecarga de manutenccedilatildeo (Bitrise)

Criar testar e implantar aplicaccedilotildees moacuteveis envolve vaacuterias etapas complexas especialmente quando consideramos um pipeline que vai de repositoacuterios de coacutedigo-fonte ateacute lojas de aplicativos Todas essas etapas podem ser automatizadas com scripts e pipelines de compilaccedilatildeo em ferramentas geneacutericas de CICD No entanto para times que se focam no desenvolvimento moacutevel e tecircm pouca ou nenhuma necessidade de integraccedilatildeo com pipelines de compilaccedilatildeo para sistemas back-end uma ferramenta especiacutefica de domiacutenio pode reduzir a sobrecarga de complexidade e manutenccedilatildeo BITRISE eacute faacutecil de configurar e fornece um conjunto abrangente de etapas preacute-configuradas para a maioria das necessidades de desenvolvimento moacutevel

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 22: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 22

CODEFRESH eacute um servidor de CI hospedado semelhante a CircleCI ou Buildkite Ele eacute centrado em contecircineres tornando Dockerfiles e clusters de hospedagem de contecirciner entidades de primeira classe Gostamos do fato de a ferramenta incentivar uma abordagem de entrega com pipeline e oferecer suporte a branching e merging Os primeiros relatoacuterios de nossos times satildeo positivos mas ainda precisamos ver como isso funciona para projetos maiores e pipelines complexos

Estamos sempre agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do restante de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco Grafeas eacute uma dessas ferramentas (Grafeas)

Estamos constantemente agrave procura de ferramentas e teacutecnicas que permitam que os times de entrega trabalhem de forma independente do resto de uma organizaccedilatildeo maior mantendo-se dentro de suas margens de seguranccedila e risco GRAFEAS eacute uma dessas ferramentas Ela permite que as organizaccedilotildees publiquem metadados autoritativos sobre artefatos de software ndash imagens do Docker bibliotecas pacotes ndash que podem ser acessados a partir de scripts de compilaccedilatildeo ou outros controles de conformidade automatizados Os mecanismos de controle de acesso permitem uma separaccedilatildeo de responsabilidades entre os times que publicam aprovaccedilotildees ou vulnerabilidades e os times que criam e implantam software Embora vaacuterias organizaccedilotildees incluindo Google e JFrog usem Grafeas em seus fluxos de trabalho vale notar que a ferramenta ainda estaacute em versatildeo alfa

HEPTIO ARK eacute uma ferramenta para gerenciar recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes O Ark eacute faacutecil de usar e configurar e permite que vocecirc faccedila backup e restaure seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo Com o Ark vocecirc pode reduzir significativamente o tempo de recuperaccedilatildeo no caso de uma falha de infraestrutura migrar facilmente os recursos do Kubernetes de um cluster para outro e replicar o ambiente de produccedilatildeo para testes e

soluccedilotildees de problemas Ark suporta os principais provedores de armazenamento de backup (incluindo AWS Azure e Google Cloud) e a partir da versatildeo 060 um sistema de plugins que adiciona compatibilidade para plataformas adicionais de armazenamento de backup e volume Os ambientes Kubernetes gerenciados como GKE fornecem esses serviccedilos prontos para uso No entanto se vocecirc estiver operando Kubernetes localmente ou na nuvem avalie com atenccedilatildeo o Heptio Ark para recuperaccedilatildeo de desastres

JAEGER eacute um sistema de rastreamento distribuiacutedo de coacutedigo aberto Semelhante ao Zipkin foi inspirado pelo relatoacuterio Google Dapper e estaacute em conformidade com OpenTracing Jaeger eacute um projeto de coacutedigo aberto mais novo que o Zipkin mas ganhou popularidade rapidamente devido ao maior nuacutemero de linguagens suportadas pelas bibliotecas clientes bem como faacutecil instalaccedilatildeo em Kubernetes Usamos Jaeger com sucesso com o Istio integrando rastreamentos de aplicaccedilotildees com o Envoy no Kubernetes e gostmos de sua interface do usuaacuterio Com Jaeger se juntando o CNCF prevemos um esforccedilo maior de engajamento da comunidade e uma integraccedilatildeo mais profunda com outros projetos CNCF

KUBE-BENCH eacute um exemplo de analisador de configuraccedilatildeo de infraestrutura que automatiza a verificaccedilatildeo da sua configuraccedilatildeo do Kubernetes em relaccedilatildeo ao CIS benchmark para K8s A ferramenta abrange autenticaccedilatildeo de usuaacuterio permissotildees e dados seguros entre outras aacutereas Nossos times tecircm considerado o kube-bench valioso na identificaccedilatildeo de configuraccedilotildees vulneraacuteveis

Ark eacute uma ferramenta para gerenciar a recuperaccedilatildeo de desastres para clusters Kubernetes e volumes persistentes Eacute faacutecil de usar e configurar e permite fazer backup e restauraccedilatildeo de seus clusters por meio de uma seacuterie de pontos de verificaccedilatildeo (Heptio Ark)

OCELOT eacute um gateway da API NET Apoacutes trecircs anos de desenvolvimento o Ocelot construiu um conjunto de recursos relativamente completo e uma comunidade ativa Embora natildeo faltem excelentes gateways de API

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 23: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 23

(por exemplo Kong) a comunidade NET parece preferir o Ocelot para criar microsserviccedilos Em parte o motivo eacute que o Ocelot se integra bem ao ecossistema NET (por exemplo com o IdentityServer) Outra razatildeo pode ser que a comunidade NET tenha estendido o Ocelot para suportar protocolos de comunicaccedilatildeo como gRPC Orleans e WebSocket

Pesquisa de UX exigem coleta e anaacutelise de dados para melhores tomadas de decisotildees sobre os produtos que precisamos construir O OPTIMAL WORKSHOP eacute um conjunto de ferramentas que ajuda a fazer isso de forma digital Recursos como primeiro clique ou classificaccedilatildeo de cartotildees ajudam a validar os protoacutetipos e melhorar a navegaccedilatildeo no site e a exibiccedilatildeo de informaccedilotildees Times distribuiacutedos em particular beneficiam-se do Optimal Workshop jaacute que ele permite conduzir pesquisas remotas

A extraccedilatildeo de informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental para o processamento de dados natildeo-estruturados Stanford CoreNLP um conjunto de ferramentas de processamento de linguagem natural baseado em Java nos ajuda a usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios (Stanford CoreNLP)

Temos cada vez mais projetos que exigem processamento de dados natildeo estruturados Extrair informaccedilotildees de negoacutecios significativas de dados de texto eacute uma teacutecnica fundamental STANFORD CORENLP eacute um conjunto de ferramentas de processamento de linguagem natural baseadas em Java Ele suporta reconhecimento de entidades nomeadas extraccedilatildeo de relacionamentos anaacutelise de sentimentos e classificaccedilatildeo de texto aleacutem de vaacuterios idiomas incluindo inglecircs chinecircs e aacuterabe Tambeacutem encontramos ferramentas uacuteteis para rotular corpus e modelos de treinamento para o nosso cenaacuterio Com Stanford CoreNLP pudemos usar as pesquisas mais recentes na aacuterea de NLP para resolver vaacuterios problemas de negoacutecios

Noacutes usamos amplamente Terraform como coacutedigo para configurar infraestrutura de nuvem TERRAGRUNT eacute um empacotador leve para Terraform que implementa

as praacuteticas defendidas pelo livro Terraform Up and Running Consideramos o Terragrunt uacutetil jaacute que incentiva moacutedulos versionados e reusabilidade para diferentes ambientes com alguns recursos uacuteteis incluindo execuccedilatildeo de coacutedigo recursivo em subdiretoacuterios Gostariacuteamos de ver a ferramenta evoluir para suportar praacuteticas de CD nativamente onde todo o coacutedigo pode ser empacotado versionado e reutilizado em diferentes ambientes em pipelines de CD Nossa equipe consegue isso hoje com soluccedilotildees alternativas

Nossos times estatildeo relatando experiecircncias de sucesso com TESTCAFE uma ferramenta de automaccedilatildeo de testes de navegador baseada em JavaScript O TestCafe permite que vocecirc escreva testes em JavaScript ou TypeScript e execute testes em qualquer navegador que suporte JavaScript O TestCafe tem vaacuterios recursos uacuteteis incluindo execuccedilatildeo paralela pronta para uso e simulaccedilatildeo de solicitaccedilatildeo de HTTP O TestCafe usa um modelo de execuccedilatildeo assiacutencrona sem tempos de espera expliacutecitos o que resulta em suiacutetes de testes muito mais estaacuteveis

TRAEFIK eacute um proxy reverso e balanceador de carga de coacutedigo aberto Se vocecirc estiver procurando por um proxy de borda que forneccedila roteamento simples sem todos os recursos de NGINX e HAProxy Traefik eacute uma boa escolha O roteador fornece reconfiguraccedilatildeo sem necessidade de recarga meacutetricas monitoramento e disjuntores essenciais para a execuccedilatildeo de microsserviccedilos Ele tambeacutem se integra muito bem com Letrsquos Encrypt para fornecer SSL termination Quando comparadas ao Traefik ferramentas como NGINX e HAProxy podem demandar o uso de ferramentas adicionais para modelar a configuraccedilatildeo em resposta agrave escala adiccedilatildeo ou remoccedilatildeo de microsserviccedilos e podem eventualmente exigir uma reinicializaccedilatildeo o que pode ser importuno em ambientes de produccedilatildeo

Valorizamos muito o feedback raacutepido durante o desenvolvimento orientado a testes e estamos sempre procurando novas maneiras de tornaacute-lo ainda mais raacutepido WALLABYJS eacute uma extensatildeo comercial para editores populares que fornece execuccedilatildeo contiacutenua de testes de unidade JavaScript destacando os resultados em linhas ao lado de seu coacutedigo A ferramenta identifica e executa o conjunto miacutenimo de testes afetados por cada alteraccedilatildeo de coacutedigo e permite que vocecirc execute testes continuamente enquanto digita

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 24: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 24

Com a crescente adoccedilatildeo da arquitetura de microsserviccedilos estamos construindo mais aplicativos distribuiacutedos do que antes Embora haja muitos benefiacutecios em uma arquitetura desacoplada a complexidade e o esforccedilo envolvidos na comprovaccedilatildeo da correccedilatildeo do sistema geral aumentaram drasticamente JEPSEN fornece ferramentas muito necessaacuterias para verificar a exatidatildeo na coordenaccedilatildeo de agendadores de tarefas testar consistecircncia eventual linearizaccedilatildeo e serializaccedilatildeo caracteriacutesticas de bancos de dados distribuiacutedos Usamos Jepsen em alguns projetos e gostamos do fato de podermos simular configuraccedilotildees injetar e corrigir falhas e verificar o estado do sistema apoacutes a recuperaccedilatildeo

MMKV eacute um framework de coacutedigo aberto desenvolvido pelo WeChat que fornece armazenamento raacutepido de valor-chave para aplicaccedilotildees moacuteveis Ele usa recursos de mapeamento de memoacuteria do iOS para evitar a necessidade de salvar explicitamente as alteraccedilotildees e eacute extremamente raacutepido e eficiente No caso de uma falha inesperada o MMKV permite que o aplicativo restaure os dados rapidamente

MockK eacute uma biblioteca nativa que ajuda nossos times a escrever testes limpos e concisos para aplicativos Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock (MockK)

MOCKK eacute uma biblioteca para mocking escrita em Kotlin Sua filosofia principal eacute fornecer suporte de primeira classe para recursos da linguagem Kotlin como co-rotinas ou blocos lambda Como uma biblioteca nativa ele ajuda nossos times a escrever coacutedigo limpo e conciso ao testar aplicaccedilotildees Kotlin ao inveacutes de usar empacotadores incocircmodos do Mockito ou do PowerMock

TYPESCRIPT eacute uma linguagem cuidadosamente considerada e suas ferramentas de aprimoramento constante bem como seu suporte a IDE continuam a nos impressionar Com um bom repositoacuterio de definiccedilotildees de tipo TypeScript noacutes nos beneficiamos

EVITEEVITE AVALIEAVALIE EXPERIMENTEEXPERIMENTE ADOTEADOTE

6

62

6364

6566

6768

69

71

72

73

74

75

56

57

58

5051

49

59

60

61

28

2930

26

27

35

36

37

41 42

43

44 45 46

3238 39

40 31

48

47

92

81

84

86

85

93

87

88

89

90

83

80

76

77

78

79

82

91

1

23

4

5

78

9 10

11

12

13

14

15

1718

19

20

21

22

23

24

25

16

33

34

5253

54

55

70

LINGUAGENS amp FRAMEWORKSADOTE

EXPERIMENTE76 Jepsen77 MMKV NOVO78 MockK NOVO79 TypeScript

AVALIE80 Apache Beam NOVO81 Camunda NOVO82 Flutter83 Ktor NOVO84 Nameko NOVO85 Pollyjs NOVO86 PredictionIO NOVO87 Puppeteer NOVO88 Q NOVO89 SAFE stack NOVO90 Spek NOVO91 troposphere92 WebAssembly93 WebFlux NOVO

EVITE

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 25: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 25

de todas as bibliotecas ricas de JavaScript ao mesmo tempo em que ganhamos seguranccedila de tipagem Isso eacute particularmente importante agrave medida que nossa base de coacutedigo baseada no navegador continua a crescer A tipagem no TypeScript permite usar IDEs e outras ferramentas para fornecer um contexto mais profundo ao seu coacutedigo aleacutem de fazer alteraccedilotildees e refatorar o coacutedigo com seguranccedila O TypeScript sendo um superconjunto de JavaScript somado agrave documentaccedilatildeo e agrave comunidade ajudaram a facilitar a curva de aprendizado

APACHE BEAM eacute um modelo de programaccedilatildeo unificado de coacutedigo aberto para definir e executar em paralelo pipelines em lote e streaming de dados O Beam fornece uma camada de API portaacutetil para descrever esses pipelines independentemente dos mecanismos de execuccedilatildeo (ou runners) como Apache Spark Apache Flink ou Google Cloud Dataflow Diferentes runners tecircm diferentes capacidades e fornecer uma API portaacutetil eacute uma tarefa difiacutecil Beam tenta encontrar um equiliacutebrio delicado extraindo ativamente as inovaccedilotildees desses runners para o modelo Beam e tambeacutem trabalhando com a comunidade para influenciar o roadmap desses runners O Beam tem um rico conjunto de transformaccedilotildees de IO integradas que cobre a maioria das necessidades de pipeline de dados Ele tambeacutem fornece um mecanismo para implementar transformaccedilotildees personalizadas para casos de uso especiacuteficos A API portaacutetil e as transformaccedilotildees de IO extensiacuteveis formam um argumento convincente para avaliar o Apache Beam para necessidades de pipeline de dados

Embora tenhamos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) Camunda eacute faacutecil de testar versionar e refatorar A integraccedilatildeo com Spring e Spring Boot o torna uma escolha soacutelida (Camunda)

Temos uma tendecircncia ao ceticismo em relaccedilatildeo agraves ferramentas de modelo e notaccedilatildeo de processos de negoacutecios (BPMN) pois geralmente elas estatildeo associadas a ambientes de baixo coacutedigo e suas desvantagens Embora o framework OSS BPMN CAMUNDA forneccedila um pouco dessa caracteriacutestica ele tambeacutem oferece fluxo de trabalho e mecanismos de decisatildeo que podem ser integrados diretamente como uma biblioteca no seu coacutedigo Java Isso facilita o teste a versionamento e a refatoraccedilatildeo de fluxos de trabalho Camunda tambeacutem se integra com Spring e Spring Boot entre outros frameworks tornando-o uma escolha soacutelida

FLUTTER eacute um framework multiplataforma que permite escrever aplicativos moacuteveis nativos em Dart Ele se beneficia do Dart e pode ser compilado em coacutedigo nativo se comunicando com a plataforma de destino sem ponte e alternacircncia de contexto ndash algo que pode causar gargalos de desempenho em estruturas como React Native ou Weex O recurso de recarga do Flutter eacute impressionante e fornece feedback visual super raacutepido ao editar o coacutedigo No momento o Flutter ainda estaacute em versatildeo beta mas continuaremos de olho nele para ver como seu ecossistema amadurece

Kotlin natildeo eacute mais apenas uma excelente opccedilatildeo para o desenvolvimento de aplicativos para dispositivos moacuteveis Novas ferramentas e frameworks surgiram demonstrando o valor da linguagem tambeacutem para o desenvolvimento de aplicaccedilotildees web KTOR eacute um desses frameworks Ao contraacuterio de outros frameworks web que suportam Kotlin Ktor eacute escrito em Kotlin usando recursos da linguagem como coroutines que permite uma implementaccedilatildeo assiacutencrona sem bloqueio A flexibilidade de incorporar diferentes ferramentas para criaccedilatildeo de logs injeccedilatildeo de dependecircncia (DI) ou um mecanismo de templates ndash aleacutem de sua arquitetura leve ndash torna Ktor uma opccedilatildeo interessante para nossos times na criaccedilatildeo de serviccedilos RESTful

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 26: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 26

Um insight que tivemos depois de conversar com nossos times eacute que Python estaacute voltando para vaacuterios domiacutenios tecnoloacutegicos Na verdade estaacute a caminho de se tornar a linguagem de programaccedilatildeo mais usada Em parte isso eacute impulsionado por sua adoccedilatildeo por cientistas de dados e em aprendizado de maacutequina mas tambeacutem vemos times adotando para construir microsserviccedilos NAMEKO eacute um framework de microsserviccedilos super leve e uma alternativa a Flask para escrever serviccedilos Ao contraacuterio do Flask o Nameko possui apenas um conjunto limitado de recursos que inclui suporte para WebSocket HTTP e AMQP Tambeacutem gostamos do foco na testabilidade Se vocecirc natildeo precisa de recursos como os templates que o Flask fornece entatildeo vale a pena analisar Nameko

POLLYJS eacute uma ferramenta simples que ajuda os times a testar sites e aplicaccedilotildees em JavaScript Nossos times gostam particularmente disso permitindo que interceptem e faccedilam stub de interaccedilotildees HTTP o que permite um teste mais faacutecil e raacutepido do coacutedigo JavaScript sem precisar aumentar os serviccedilos ou componentes dependentes

PREDICTIONIO eacute um servidor de aprendizagem de maacutequina de coacutedigo aberto Pessoas desenvolvedoras e cientistas de dados podem usaacute-lo para criar aplicaticcedilotildees inteligentes para previsatildeo Como todos as aplicaccedilotildees inteligentes o PredictionIO tem trecircs partes coleta e armazenamento de dados treinamento de modelos implantaccedilatildeo de modelos e serviccedilo de exposiccedilatildeo As pessoas desenvolvedoras podem se concentrar na implementaccedilatildeo de loacutegica de processamento de dados algoritmo de modelo e loacutegica de previsatildeo com base nas interfaces correspondentes e liberar-se do armazenamento de dados e da implantaccedilatildeo de treinamento de modelo Em nossa experiecircncia o PredictionIO pode suportar volumes grandes e pequenos de dados com baixa conconrrecircncia Utilizamos o PredictionIO principalmente para criar serviccedilos preditivos para pequenas e meacutedias empresas ou como prova de conceito ao criar mecanismos de previsatildeo mais complexos e personalizados

No Radar anterior mencionamos o Headless Chrome para testes de front-end Com a adoccedilatildeo do Chrome DevTools Protocol (CDP) por outros navegadores um novo conjunto de bibliotecas estaacute surgindo para automaccedilatildeo e testes em navegadores O CDP permite um controle refinado sobre o navegador mesmo no modo headless Novas bibliotecas de alto niacutevel estatildeo sendo criadas usando o CDP para testes e automaccedilatildeo PUPPETEER eacute uma dessas novas bibliotecas Ela pode conduzir o headless Chrome por meio de uma aplicaccedilatildeo de paacutegina uacutenica obter rastreamento de tempo para diagnoacutesticos de desempenho e muito mais Nossos times acharam mais raacutepido e mais flexiacutevel que as alternativas baseadas no WebDriver

Enquanto ainda esperamos o hardware chegar podemos experimentar a computaccedilatildeo quacircntica usando linguagens e simuladores As amostras do Q podem dar uma ideia do potencial futuro da programaccedilatildeo (Q)

A computaccedilatildeo quacircntica atualmente existe em uma espeacutecie de zona imaginaacuteria por estar disponiacutevel para testes sem ter chegado ainda Enquanto ainda esperamos o hardware chegar podemos experimentar e aprender com linguagens e simuladores Embora a IBM e outras empresas tenham feito um bom progresso prestamos atenccedilatildeo especial aos esforccedilos da Microsoft com base na linguagem Q e seu simulador (32 qubits localmente e 40 no Azure) Se vocecirc quiser comeccedilar a pensar sobre o futuro da programaccedilatildeo confira o conjunto de exemplos no GitHub

SAFE STACK ndash cujo nome deriva das iniciais de Suave Azure Fable e Elmish ndash traz uma seacuterie de tecnologias para uma stack coerente para desenvolvimento web Ela eacute construiacutedo em torno da linguagem de programaccedilatildeo F tanto no lado do servidor quanto no navegador e portanto tem foco na programaccedilatildeo funcional e segura de tipos com uma abordagem

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 27: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

copy ThoughtWorks Inc Todos os direitos reservados TECHNOLOGY RADAR | 27

assiacutencrona Ele oferece recursos de produtividade como o recarregamento hot e permite substituir partes da stack por exemplo a estrutura Web do lado do servidor ou o provedor de nuvem

A adoccedilatildeo de uma nova linguagem normalmente provoca o surgimento de novas ferramentas que suportam praacuteticas de engenharia maduras como a automaccedilatildeo de testes Kotlin natildeo eacute exceccedilatildeo SPEK eacute um framework de testes ndash inspirada em ferramentas conhecidas como Cucumber RSpec and Jasmine ndash que cria testes em Gherkin e Specification permitindo que os times tragam praacuteticas maduras como o desenvolvimento orientado por comportamento para o espaccedilo Kotlin

Estamos testando TROPOSPHERE como forma de definir infraestrutura como coacutedigo na AWS para nossos projetos nos quais AWS CloudFormation eacute usada no lugar de Terraform troposphere eacute uma biblioteca Python que nos permite escrever coacutedigo em Python para gerar descriccedilotildees JSON em CloudFormation O que mais gostamos em troposphere eacute que ela facilita a detecccedilatildeo raacutepida de erros JSON aplicando verificaccedilatildeo de tipo testes de unidade e composiccedilatildeo DRY de recursos da AWS

WEBASSEMBLY eacute um grande avanccedilo em termos de recursos de navegador como ambiente de execuccedilatildeo de coacutedigo Suportado por todos os principais navegadores e compatiacutevel com versotildees anteriores eacute um formato de compilaccedilatildeo binaacuteria projetado para ser executado no navegador em velocidades quase nativas Ele amplia a variedade de linguagens que vocecirc pode usar

para escrever funcionalidades front-end com foco inicial em C C ++ e Rust e tambeacutem eacute um destino de compilaccedilatildeo LLVM Quando executado na sandbox ele pode interagir com JavaScript e compartilhar as mesmas permissotildees e modelo de seguranccedila Quando usado com o novo compilador de streaming do Firefox tambeacutem resulta em inicializaccedilatildeo de paacutegina mais raacutepida Embora ainda seja cedo este padratildeo W3C eacute definitivamente um padratildeo a se explorar

Depois de trabalhar com um estilo funcional reativo em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem melhora a legibilidade do coacutedigo e o rendimento do sistema (WebFlux)

O Spring Framework 5 lanccedilado haacute mais de um ano inclui fluxos reativos um padratildeo para o processamento de fluxo assiacutencrono com contrapressatildeo natildeo-bloqueante O moacutedulo WEBFLUX apresenta um alternativa reativa ao moacutedulo Spring MVC tradicional para escrever aplicaccedilotildees Web no ecossistema Spring Depois de trabalhar com ele em vaacuterias aplicaccedilotildees nossos times ficaram impressionados e relataram que a abordagem reativa (funcional) melhora a legibilidade do coacutedigo e a taxa de transferecircncia do sistema Eles observam no entanto que a adoccedilatildeo do WebFlux requer uma mudanccedila significativa no pensamento e recomendam que isso seja considerado na decisatildeo de escolher o WebFlux em relaccedilatildeo ao Spring MVC

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 28: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

Saiba em primeira matildeo sobre o lanccedilamento do proacuteximo Technology Radar e atualize-se com webinars e

conteuacutedos exclusivos

INSCREVA-SE

thghtworksSub-PT

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar

Page 29: TECHNOLOGY RADAR VOL - assets.thoughtworks.com · RADAR VOL.19 Nossas ideias sobre tecnologias e tendências que estão moldando o futuro ... melhor o ritmo frenético de mudança

A ThoughtWorks eacute uma consultoria de tecnologia e uma comunidade de pessoas apaixonadas e guiadas por propoacutesitos Ajudamos nossas clientes a colocar a tecnologia no centro dos negoacutecios e de forma conjunta criar o software que mais importa para elas Dedicada agrave mudanccedila social positiva nossa missatildeo eacute melhorar a humanidade por meio do software e fazemos

parcerias com muitas organizaccedilotildees que seguem essa mesma direccedilatildeo

Fundada haacute 25 anos a ThoughtWorks se tornou uma empresa com mais de 5000 pessoas incluindo uma aacuterea de produtos que desenvolve ferramentas pioneiras para times de software A ThoughtWorks tem 41 escritoacuterios em 14 paiacuteses Alemanha Austraacutelia Brasil Canadaacute Chile China Equador Espanha

Estados Unidos Iacutendia Itaacutelia Reino Unido Singapura e Tailacircndia

thoughtworkscomptradar

TWTechRadar