28
TECHNOLOGY RADAR VOL.17 Informació sobre la tecnologia i les tendències que estan modelant el futur thoughtworks.com/radar #TWTechRadar

TECHNOLOGY RADAR VOL

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TECHNOLOGY RADAR VOL

TECHNOLOGY RADAR VOL17

Informacioacute sobre la tecnologia i les tendegravencies que estan

modelant el futur

thoughtworkscomradarTWTechRadar

COLmiddotLABORADORSEl Radar Tecnologravegic ha sigut creat pel Gabinet drsquoAssessors de ThoughtWorks Technology format per

Rebecca Parsons (CTO) | Martin Fowler (Chief Scientist) | 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 | Rachel Laycock | Scott Shaw | Shangqi Liu | Zhamak Dehghani

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 3

QUEgrave HI HA DE NOUAquests soacuten els temes principals drsquoaquesta edicioacute

PROGRAMARI DE CODI OBERT ldquoMADE IN CHINArdquoLa marea estagrave pujant A causa dels canvis tant drsquoaltitud com de poliacutetiques grans companyies xineses com Alibaba i Baidu estan traient al mercat entorns de treball eines i plataformes de codi obert A mesura que srsquoexpandeixen econogravemicament els seus ecosistemes de programari creixen ragravepidament

Srsquoespera que el nombre de projectes de codi obert de qualitat a Github i altres pagravegines de codi obert creixi a causa del gran nombre de projectes del gegant mercat xinegraves Perograve per quegrave volen alliberar tants projectes les empreses xineses Igual que passa a grans mercats de programari com Silicon Valley existeix molta competegravencia entre els desenvolupadors i apujar els sous no sempre funciona indefinidament

Eacutes per aixograve que el fet de treballar a un projecte de codi obert capdavanter amb altres grans desenvolupadors eacutes un gran almiddotlicient universal Creiem que les grans innovacions de codi obert seguiran el mateix camiacute dels arxius README que ja srsquoescriuen primer en xinegraves i despreacutes en anglegraves

KUBERNETES LrsquoORQUESTRADOR DE CONTENIDORS DrsquoELECCIOacuteHi ha un gran nombre drsquoentrades a aquest Radar que parlen de Kubernetes i la seva presegravencia cada vegada meacutes gran a molts projectes Sembla que lrsquoecosistema de desenvolupament de programari srsquoestagrave decantant per Kubernetes i les seves eines relacionades per solucionar els problemes relacionats amb el desplegament lrsquoescalacioacute i lrsquooperacioacute de contenidors

Algunes entrades del radar com ara GKE Kops i Sonobuoy parlen de serveis de plataformes gestionades i drsquoeines que milloren lrsquoexperiegravencia drsquoadoptar i utilitzar Kubernetes La seva capacitat drsquoexecutar diversos contenidors com una sola unitat de planificacioacute fa possible la xarxa de serveis i els sidecars per seguretat de punt final

Kubernetes srsquoha convertit en el sistema operatiu per contenidors per defecte molts proveiumldors de serveis al nuacutevol han aprofitat la seva arquitectura oberta i modular per adoptar i utilitzar Kubernetes mentre que les eines treuen profit de les seves APIs obertes per accedir a abstraccions com cagraverregues de treball cluacutesters configuracions i emmagatzematge

Estem veient com hi ha cada vegada meacutes productes que utilitzen Kubernetes com un ecosistema la qual cosa el converteix en el seguumlent nivell drsquoabstraccioacute despreacutes dels microserveis i els contenidors Aixograve doncs no deixa de ser una prova meacutes de que els desenvolupadores poden treure partit drsquoestils drsquoarquitectura moderns independentment de les complexitats inherents als sistemes distribuiumlts

EL NUacuteVOL COM LA NOVA NORMALrsquoaltre tema de conversa generalitzat present mentre muntagravevem aquesta entrega del Radar tenia un caire molt ldquoennuvolatrdquo A mesura que els proveiumldors de serveis al nuacutevol milloren i equiparen les seves caracteriacutestiques el nou model puacuteblic al nuacutevol srsquoestagrave convertint en el servei drsquoeleccioacute per a moltes organitzacions

A lrsquohora drsquoembarcar-se en nous projectes hi ha moltes empreses que en lloc de preguntar-se ldquoper quegrave al nuacutevolrdquo es pregunten ldquoper quegrave no al nuacutevolrdquo Eacutes cert que alguns tipus de programari encara requereixen sistemes in situ perograve a mida que els preus baixen i hi ha meacutes i millors capacitats el desenvolupament al nuacutevol eacutes cada vegada meacutes viable

Tot i que es podria dir que tots els proveiumldors de serveis al nuacutevol ofereixen les mateixes funcions bagravesiques tots tenen funcions uacuteniques per solucions especiacutefiques que els diferencien dels altres Aixiacute doncs estem veient empreses que utilitzen diversos proveiumldors gragravecies al Polycloud i que seleccionen les capacitats especiacutefiques que millor srsquoajusten a les seves necessitats

CONFIANCcedilA EN CADENES DE BLOCS DISTRIBUIumlDES MEacuteS UNIFORMEMENTTot i el caos al voltant de les criptodivises als mercats molts dels nostres clients estan trobant maneres de treure partit a solucions de cadenes de blocs per a registres comptables i contractes intelmiddotligents Moltes de les entrades drsquoaquest Radar mostren maduresa en lrsquouacutes de tecnologies relacionades amb les cadenes de blocs les quals aporten maneres cada vegada meacutes interessants drsquoimplementar contractes intelmiddotligents amb una varietat de tegravecniques i llenguatges de programacioacute

Les cadenes de blocs solucionen el vell problema de la confianccedila distribuiumlda i dels registres comptables compartits i inesborrables Actualment les empreses estan incrementant la confianccedila dels seus usuaris en les mecagraveniques subjacents a les implementacions de cadenes de blocs Diferents induacutestries tenen diferents problemes de confianccedila perograve creiem que les solucions de cadenes de blocs trobaran la manera de solucionar-los

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 5

SOBRE EL RADARAls treballadors de ThoughtWorks els apassiona la tecnologia La creem lrsquoinvestiguem la posem a provala compartim gragravecies al codi obert escrivim sobre ella i sempre la volem millorar per a beneficiar a tothom La nostra missioacute eacutes arribar a lrsquoexcelmiddotlegravencia i revolucionarla informagravetica Amb aquesta missioacute en ment creemi compartim el Radar Tecnologravegic El Radar el crea el gabinet drsquoassessors de ThoughtWorks Technology un grup de liacuteders segraveniors de ThoughtWorks Es reuneixen periogravedicament per a parlar sobre lrsquoestrategravegia global de ThoughtWorks i les tendegravencies tecnologravegiques que tenen un impacte significatiu sobre la nostra industria

Aquest Radar captura lrsquoessegravencia de les xerrades del gabinet drsquoassessor i la comparteix en un format adequat

RADAR DrsquoUN COP DrsquoULL

Els elements nous o que han canviat de manera significativa des de lrsquouacuteltim Radar es representen amb un triangle mentre que els elements que no srsquohan mogut es representen amb un cercle

El nostre radar teacute visioacute de futur Per a deixar espai per a nous elements deixem que elements que no srsquohan mogut recentment srsquoesvaeixin la qual cosa no eacutes un reflex del seu valor sinoacute meacutes beacute una limitacioacute del nostre Radar

NOU O CANVIS

SENSE CANVIS

PRECAUCIOacuteContinuar amb precaucioacute

4AVALUARVal la pena explorar-la per a poder entendre com afectaria llsquoempresa

3

PROVARVal la pena seguir investigantEacutes important entendre com desenvolupar aquesta habilitat Les empreses haurien de provar aquesta tecnologia en un projecte en el que es pogueacutes permetre el risc

2ADOPTARCreiem fermament que la industria hauria drsquoadoptar aquests elements Nosaltres els utilitzem quan ho creiem oportuacute en els nostres projectes

1

per a una gran varietat drsquoactors des de gerents de sistemes (CIO) fins a desenvolupadors El contingut del Radar srsquoha pensat com un resum conciacutes drsquoaquestes tecnologies

Recomanem que srsquoexplorin meacutes detalladament aquestes tecnologies El Radar teacute una naturalesa meacutes aviat gragravefica i agrupa els elements en tegravecniques eines plataformes i llenguatges i entorns de treball Si algun element pot aparegraveixer en meacutes drsquoun quadrant escollim el que ens sembla meacutes adient Agrupem aquests elements en 4 anells per a reflectir el que en pensemPer a meacutes informacioacute sobre el radar visiteu thoughtworkscomradarfaq

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

96 108

421 3

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 6

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvis Sense canvis

EL RADARTEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambiciose

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 7

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvisSense canvis

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU 59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

LLENGUATGES I ENTORNS DE PRECAUCIOacute TREBALLADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

EL RADAR

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 2: TECHNOLOGY RADAR VOL

COLmiddotLABORADORSEl Radar Tecnologravegic ha sigut creat pel Gabinet drsquoAssessors de ThoughtWorks Technology format per

Rebecca Parsons (CTO) | Martin Fowler (Chief Scientist) | 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 | Rachel Laycock | Scott Shaw | Shangqi Liu | Zhamak Dehghani

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 3

QUEgrave HI HA DE NOUAquests soacuten els temes principals drsquoaquesta edicioacute

PROGRAMARI DE CODI OBERT ldquoMADE IN CHINArdquoLa marea estagrave pujant A causa dels canvis tant drsquoaltitud com de poliacutetiques grans companyies xineses com Alibaba i Baidu estan traient al mercat entorns de treball eines i plataformes de codi obert A mesura que srsquoexpandeixen econogravemicament els seus ecosistemes de programari creixen ragravepidament

Srsquoespera que el nombre de projectes de codi obert de qualitat a Github i altres pagravegines de codi obert creixi a causa del gran nombre de projectes del gegant mercat xinegraves Perograve per quegrave volen alliberar tants projectes les empreses xineses Igual que passa a grans mercats de programari com Silicon Valley existeix molta competegravencia entre els desenvolupadors i apujar els sous no sempre funciona indefinidament

Eacutes per aixograve que el fet de treballar a un projecte de codi obert capdavanter amb altres grans desenvolupadors eacutes un gran almiddotlicient universal Creiem que les grans innovacions de codi obert seguiran el mateix camiacute dels arxius README que ja srsquoescriuen primer en xinegraves i despreacutes en anglegraves

KUBERNETES LrsquoORQUESTRADOR DE CONTENIDORS DrsquoELECCIOacuteHi ha un gran nombre drsquoentrades a aquest Radar que parlen de Kubernetes i la seva presegravencia cada vegada meacutes gran a molts projectes Sembla que lrsquoecosistema de desenvolupament de programari srsquoestagrave decantant per Kubernetes i les seves eines relacionades per solucionar els problemes relacionats amb el desplegament lrsquoescalacioacute i lrsquooperacioacute de contenidors

Algunes entrades del radar com ara GKE Kops i Sonobuoy parlen de serveis de plataformes gestionades i drsquoeines que milloren lrsquoexperiegravencia drsquoadoptar i utilitzar Kubernetes La seva capacitat drsquoexecutar diversos contenidors com una sola unitat de planificacioacute fa possible la xarxa de serveis i els sidecars per seguretat de punt final

Kubernetes srsquoha convertit en el sistema operatiu per contenidors per defecte molts proveiumldors de serveis al nuacutevol han aprofitat la seva arquitectura oberta i modular per adoptar i utilitzar Kubernetes mentre que les eines treuen profit de les seves APIs obertes per accedir a abstraccions com cagraverregues de treball cluacutesters configuracions i emmagatzematge

Estem veient com hi ha cada vegada meacutes productes que utilitzen Kubernetes com un ecosistema la qual cosa el converteix en el seguumlent nivell drsquoabstraccioacute despreacutes dels microserveis i els contenidors Aixograve doncs no deixa de ser una prova meacutes de que els desenvolupadores poden treure partit drsquoestils drsquoarquitectura moderns independentment de les complexitats inherents als sistemes distribuiumlts

EL NUacuteVOL COM LA NOVA NORMALrsquoaltre tema de conversa generalitzat present mentre muntagravevem aquesta entrega del Radar tenia un caire molt ldquoennuvolatrdquo A mesura que els proveiumldors de serveis al nuacutevol milloren i equiparen les seves caracteriacutestiques el nou model puacuteblic al nuacutevol srsquoestagrave convertint en el servei drsquoeleccioacute per a moltes organitzacions

A lrsquohora drsquoembarcar-se en nous projectes hi ha moltes empreses que en lloc de preguntar-se ldquoper quegrave al nuacutevolrdquo es pregunten ldquoper quegrave no al nuacutevolrdquo Eacutes cert que alguns tipus de programari encara requereixen sistemes in situ perograve a mida que els preus baixen i hi ha meacutes i millors capacitats el desenvolupament al nuacutevol eacutes cada vegada meacutes viable

Tot i que es podria dir que tots els proveiumldors de serveis al nuacutevol ofereixen les mateixes funcions bagravesiques tots tenen funcions uacuteniques per solucions especiacutefiques que els diferencien dels altres Aixiacute doncs estem veient empreses que utilitzen diversos proveiumldors gragravecies al Polycloud i que seleccionen les capacitats especiacutefiques que millor srsquoajusten a les seves necessitats

CONFIANCcedilA EN CADENES DE BLOCS DISTRIBUIumlDES MEacuteS UNIFORMEMENTTot i el caos al voltant de les criptodivises als mercats molts dels nostres clients estan trobant maneres de treure partit a solucions de cadenes de blocs per a registres comptables i contractes intelmiddotligents Moltes de les entrades drsquoaquest Radar mostren maduresa en lrsquouacutes de tecnologies relacionades amb les cadenes de blocs les quals aporten maneres cada vegada meacutes interessants drsquoimplementar contractes intelmiddotligents amb una varietat de tegravecniques i llenguatges de programacioacute

Les cadenes de blocs solucionen el vell problema de la confianccedila distribuiumlda i dels registres comptables compartits i inesborrables Actualment les empreses estan incrementant la confianccedila dels seus usuaris en les mecagraveniques subjacents a les implementacions de cadenes de blocs Diferents induacutestries tenen diferents problemes de confianccedila perograve creiem que les solucions de cadenes de blocs trobaran la manera de solucionar-los

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 5

SOBRE EL RADARAls treballadors de ThoughtWorks els apassiona la tecnologia La creem lrsquoinvestiguem la posem a provala compartim gragravecies al codi obert escrivim sobre ella i sempre la volem millorar per a beneficiar a tothom La nostra missioacute eacutes arribar a lrsquoexcelmiddotlegravencia i revolucionarla informagravetica Amb aquesta missioacute en ment creemi compartim el Radar Tecnologravegic El Radar el crea el gabinet drsquoassessors de ThoughtWorks Technology un grup de liacuteders segraveniors de ThoughtWorks Es reuneixen periogravedicament per a parlar sobre lrsquoestrategravegia global de ThoughtWorks i les tendegravencies tecnologravegiques que tenen un impacte significatiu sobre la nostra industria

Aquest Radar captura lrsquoessegravencia de les xerrades del gabinet drsquoassessor i la comparteix en un format adequat

RADAR DrsquoUN COP DrsquoULL

Els elements nous o que han canviat de manera significativa des de lrsquouacuteltim Radar es representen amb un triangle mentre que els elements que no srsquohan mogut es representen amb un cercle

El nostre radar teacute visioacute de futur Per a deixar espai per a nous elements deixem que elements que no srsquohan mogut recentment srsquoesvaeixin la qual cosa no eacutes un reflex del seu valor sinoacute meacutes beacute una limitacioacute del nostre Radar

NOU O CANVIS

SENSE CANVIS

PRECAUCIOacuteContinuar amb precaucioacute

4AVALUARVal la pena explorar-la per a poder entendre com afectaria llsquoempresa

3

PROVARVal la pena seguir investigantEacutes important entendre com desenvolupar aquesta habilitat Les empreses haurien de provar aquesta tecnologia en un projecte en el que es pogueacutes permetre el risc

2ADOPTARCreiem fermament que la industria hauria drsquoadoptar aquests elements Nosaltres els utilitzem quan ho creiem oportuacute en els nostres projectes

1

per a una gran varietat drsquoactors des de gerents de sistemes (CIO) fins a desenvolupadors El contingut del Radar srsquoha pensat com un resum conciacutes drsquoaquestes tecnologies

Recomanem que srsquoexplorin meacutes detalladament aquestes tecnologies El Radar teacute una naturalesa meacutes aviat gragravefica i agrupa els elements en tegravecniques eines plataformes i llenguatges i entorns de treball Si algun element pot aparegraveixer en meacutes drsquoun quadrant escollim el que ens sembla meacutes adient Agrupem aquests elements en 4 anells per a reflectir el que en pensemPer a meacutes informacioacute sobre el radar visiteu thoughtworkscomradarfaq

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

96 108

421 3

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 6

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvis Sense canvis

EL RADARTEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambiciose

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 7

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvisSense canvis

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU 59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

LLENGUATGES I ENTORNS DE PRECAUCIOacute TREBALLADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

EL RADAR

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 3: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 3

QUEgrave HI HA DE NOUAquests soacuten els temes principals drsquoaquesta edicioacute

PROGRAMARI DE CODI OBERT ldquoMADE IN CHINArdquoLa marea estagrave pujant A causa dels canvis tant drsquoaltitud com de poliacutetiques grans companyies xineses com Alibaba i Baidu estan traient al mercat entorns de treball eines i plataformes de codi obert A mesura que srsquoexpandeixen econogravemicament els seus ecosistemes de programari creixen ragravepidament

Srsquoespera que el nombre de projectes de codi obert de qualitat a Github i altres pagravegines de codi obert creixi a causa del gran nombre de projectes del gegant mercat xinegraves Perograve per quegrave volen alliberar tants projectes les empreses xineses Igual que passa a grans mercats de programari com Silicon Valley existeix molta competegravencia entre els desenvolupadors i apujar els sous no sempre funciona indefinidament

Eacutes per aixograve que el fet de treballar a un projecte de codi obert capdavanter amb altres grans desenvolupadors eacutes un gran almiddotlicient universal Creiem que les grans innovacions de codi obert seguiran el mateix camiacute dels arxius README que ja srsquoescriuen primer en xinegraves i despreacutes en anglegraves

KUBERNETES LrsquoORQUESTRADOR DE CONTENIDORS DrsquoELECCIOacuteHi ha un gran nombre drsquoentrades a aquest Radar que parlen de Kubernetes i la seva presegravencia cada vegada meacutes gran a molts projectes Sembla que lrsquoecosistema de desenvolupament de programari srsquoestagrave decantant per Kubernetes i les seves eines relacionades per solucionar els problemes relacionats amb el desplegament lrsquoescalacioacute i lrsquooperacioacute de contenidors

Algunes entrades del radar com ara GKE Kops i Sonobuoy parlen de serveis de plataformes gestionades i drsquoeines que milloren lrsquoexperiegravencia drsquoadoptar i utilitzar Kubernetes La seva capacitat drsquoexecutar diversos contenidors com una sola unitat de planificacioacute fa possible la xarxa de serveis i els sidecars per seguretat de punt final

Kubernetes srsquoha convertit en el sistema operatiu per contenidors per defecte molts proveiumldors de serveis al nuacutevol han aprofitat la seva arquitectura oberta i modular per adoptar i utilitzar Kubernetes mentre que les eines treuen profit de les seves APIs obertes per accedir a abstraccions com cagraverregues de treball cluacutesters configuracions i emmagatzematge

Estem veient com hi ha cada vegada meacutes productes que utilitzen Kubernetes com un ecosistema la qual cosa el converteix en el seguumlent nivell drsquoabstraccioacute despreacutes dels microserveis i els contenidors Aixograve doncs no deixa de ser una prova meacutes de que els desenvolupadores poden treure partit drsquoestils drsquoarquitectura moderns independentment de les complexitats inherents als sistemes distribuiumlts

EL NUacuteVOL COM LA NOVA NORMALrsquoaltre tema de conversa generalitzat present mentre muntagravevem aquesta entrega del Radar tenia un caire molt ldquoennuvolatrdquo A mesura que els proveiumldors de serveis al nuacutevol milloren i equiparen les seves caracteriacutestiques el nou model puacuteblic al nuacutevol srsquoestagrave convertint en el servei drsquoeleccioacute per a moltes organitzacions

A lrsquohora drsquoembarcar-se en nous projectes hi ha moltes empreses que en lloc de preguntar-se ldquoper quegrave al nuacutevolrdquo es pregunten ldquoper quegrave no al nuacutevolrdquo Eacutes cert que alguns tipus de programari encara requereixen sistemes in situ perograve a mida que els preus baixen i hi ha meacutes i millors capacitats el desenvolupament al nuacutevol eacutes cada vegada meacutes viable

Tot i que es podria dir que tots els proveiumldors de serveis al nuacutevol ofereixen les mateixes funcions bagravesiques tots tenen funcions uacuteniques per solucions especiacutefiques que els diferencien dels altres Aixiacute doncs estem veient empreses que utilitzen diversos proveiumldors gragravecies al Polycloud i que seleccionen les capacitats especiacutefiques que millor srsquoajusten a les seves necessitats

CONFIANCcedilA EN CADENES DE BLOCS DISTRIBUIumlDES MEacuteS UNIFORMEMENTTot i el caos al voltant de les criptodivises als mercats molts dels nostres clients estan trobant maneres de treure partit a solucions de cadenes de blocs per a registres comptables i contractes intelmiddotligents Moltes de les entrades drsquoaquest Radar mostren maduresa en lrsquouacutes de tecnologies relacionades amb les cadenes de blocs les quals aporten maneres cada vegada meacutes interessants drsquoimplementar contractes intelmiddotligents amb una varietat de tegravecniques i llenguatges de programacioacute

Les cadenes de blocs solucionen el vell problema de la confianccedila distribuiumlda i dels registres comptables compartits i inesborrables Actualment les empreses estan incrementant la confianccedila dels seus usuaris en les mecagraveniques subjacents a les implementacions de cadenes de blocs Diferents induacutestries tenen diferents problemes de confianccedila perograve creiem que les solucions de cadenes de blocs trobaran la manera de solucionar-los

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 5

SOBRE EL RADARAls treballadors de ThoughtWorks els apassiona la tecnologia La creem lrsquoinvestiguem la posem a provala compartim gragravecies al codi obert escrivim sobre ella i sempre la volem millorar per a beneficiar a tothom La nostra missioacute eacutes arribar a lrsquoexcelmiddotlegravencia i revolucionarla informagravetica Amb aquesta missioacute en ment creemi compartim el Radar Tecnologravegic El Radar el crea el gabinet drsquoassessors de ThoughtWorks Technology un grup de liacuteders segraveniors de ThoughtWorks Es reuneixen periogravedicament per a parlar sobre lrsquoestrategravegia global de ThoughtWorks i les tendegravencies tecnologravegiques que tenen un impacte significatiu sobre la nostra industria

Aquest Radar captura lrsquoessegravencia de les xerrades del gabinet drsquoassessor i la comparteix en un format adequat

RADAR DrsquoUN COP DrsquoULL

Els elements nous o que han canviat de manera significativa des de lrsquouacuteltim Radar es representen amb un triangle mentre que els elements que no srsquohan mogut es representen amb un cercle

El nostre radar teacute visioacute de futur Per a deixar espai per a nous elements deixem que elements que no srsquohan mogut recentment srsquoesvaeixin la qual cosa no eacutes un reflex del seu valor sinoacute meacutes beacute una limitacioacute del nostre Radar

NOU O CANVIS

SENSE CANVIS

PRECAUCIOacuteContinuar amb precaucioacute

4AVALUARVal la pena explorar-la per a poder entendre com afectaria llsquoempresa

3

PROVARVal la pena seguir investigantEacutes important entendre com desenvolupar aquesta habilitat Les empreses haurien de provar aquesta tecnologia en un projecte en el que es pogueacutes permetre el risc

2ADOPTARCreiem fermament que la industria hauria drsquoadoptar aquests elements Nosaltres els utilitzem quan ho creiem oportuacute en els nostres projectes

1

per a una gran varietat drsquoactors des de gerents de sistemes (CIO) fins a desenvolupadors El contingut del Radar srsquoha pensat com un resum conciacutes drsquoaquestes tecnologies

Recomanem que srsquoexplorin meacutes detalladament aquestes tecnologies El Radar teacute una naturalesa meacutes aviat gragravefica i agrupa els elements en tegravecniques eines plataformes i llenguatges i entorns de treball Si algun element pot aparegraveixer en meacutes drsquoun quadrant escollim el que ens sembla meacutes adient Agrupem aquests elements en 4 anells per a reflectir el que en pensemPer a meacutes informacioacute sobre el radar visiteu thoughtworkscomradarfaq

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

96 108

421 3

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 6

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvis Sense canvis

EL RADARTEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambiciose

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 7

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvisSense canvis

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU 59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

LLENGUATGES I ENTORNS DE PRECAUCIOacute TREBALLADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

EL RADAR

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 4: TECHNOLOGY RADAR VOL

EL NUacuteVOL COM LA NOVA NORMALrsquoaltre tema de conversa generalitzat present mentre muntagravevem aquesta entrega del Radar tenia un caire molt ldquoennuvolatrdquo A mesura que els proveiumldors de serveis al nuacutevol milloren i equiparen les seves caracteriacutestiques el nou model puacuteblic al nuacutevol srsquoestagrave convertint en el servei drsquoeleccioacute per a moltes organitzacions

A lrsquohora drsquoembarcar-se en nous projectes hi ha moltes empreses que en lloc de preguntar-se ldquoper quegrave al nuacutevolrdquo es pregunten ldquoper quegrave no al nuacutevolrdquo Eacutes cert que alguns tipus de programari encara requereixen sistemes in situ perograve a mida que els preus baixen i hi ha meacutes i millors capacitats el desenvolupament al nuacutevol eacutes cada vegada meacutes viable

Tot i que es podria dir que tots els proveiumldors de serveis al nuacutevol ofereixen les mateixes funcions bagravesiques tots tenen funcions uacuteniques per solucions especiacutefiques que els diferencien dels altres Aixiacute doncs estem veient empreses que utilitzen diversos proveiumldors gragravecies al Polycloud i que seleccionen les capacitats especiacutefiques que millor srsquoajusten a les seves necessitats

CONFIANCcedilA EN CADENES DE BLOCS DISTRIBUIumlDES MEacuteS UNIFORMEMENTTot i el caos al voltant de les criptodivises als mercats molts dels nostres clients estan trobant maneres de treure partit a solucions de cadenes de blocs per a registres comptables i contractes intelmiddotligents Moltes de les entrades drsquoaquest Radar mostren maduresa en lrsquouacutes de tecnologies relacionades amb les cadenes de blocs les quals aporten maneres cada vegada meacutes interessants drsquoimplementar contractes intelmiddotligents amb una varietat de tegravecniques i llenguatges de programacioacute

Les cadenes de blocs solucionen el vell problema de la confianccedila distribuiumlda i dels registres comptables compartits i inesborrables Actualment les empreses estan incrementant la confianccedila dels seus usuaris en les mecagraveniques subjacents a les implementacions de cadenes de blocs Diferents induacutestries tenen diferents problemes de confianccedila perograve creiem que les solucions de cadenes de blocs trobaran la manera de solucionar-los

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 5

SOBRE EL RADARAls treballadors de ThoughtWorks els apassiona la tecnologia La creem lrsquoinvestiguem la posem a provala compartim gragravecies al codi obert escrivim sobre ella i sempre la volem millorar per a beneficiar a tothom La nostra missioacute eacutes arribar a lrsquoexcelmiddotlegravencia i revolucionarla informagravetica Amb aquesta missioacute en ment creemi compartim el Radar Tecnologravegic El Radar el crea el gabinet drsquoassessors de ThoughtWorks Technology un grup de liacuteders segraveniors de ThoughtWorks Es reuneixen periogravedicament per a parlar sobre lrsquoestrategravegia global de ThoughtWorks i les tendegravencies tecnologravegiques que tenen un impacte significatiu sobre la nostra industria

Aquest Radar captura lrsquoessegravencia de les xerrades del gabinet drsquoassessor i la comparteix en un format adequat

RADAR DrsquoUN COP DrsquoULL

Els elements nous o que han canviat de manera significativa des de lrsquouacuteltim Radar es representen amb un triangle mentre que els elements que no srsquohan mogut es representen amb un cercle

El nostre radar teacute visioacute de futur Per a deixar espai per a nous elements deixem que elements que no srsquohan mogut recentment srsquoesvaeixin la qual cosa no eacutes un reflex del seu valor sinoacute meacutes beacute una limitacioacute del nostre Radar

NOU O CANVIS

SENSE CANVIS

PRECAUCIOacuteContinuar amb precaucioacute

4AVALUARVal la pena explorar-la per a poder entendre com afectaria llsquoempresa

3

PROVARVal la pena seguir investigantEacutes important entendre com desenvolupar aquesta habilitat Les empreses haurien de provar aquesta tecnologia en un projecte en el que es pogueacutes permetre el risc

2ADOPTARCreiem fermament que la industria hauria drsquoadoptar aquests elements Nosaltres els utilitzem quan ho creiem oportuacute en els nostres projectes

1

per a una gran varietat drsquoactors des de gerents de sistemes (CIO) fins a desenvolupadors El contingut del Radar srsquoha pensat com un resum conciacutes drsquoaquestes tecnologies

Recomanem que srsquoexplorin meacutes detalladament aquestes tecnologies El Radar teacute una naturalesa meacutes aviat gragravefica i agrupa els elements en tegravecniques eines plataformes i llenguatges i entorns de treball Si algun element pot aparegraveixer en meacutes drsquoun quadrant escollim el que ens sembla meacutes adient Agrupem aquests elements en 4 anells per a reflectir el que en pensemPer a meacutes informacioacute sobre el radar visiteu thoughtworkscomradarfaq

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

96 108

421 3

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 6

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvis Sense canvis

EL RADARTEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambiciose

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 7

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvisSense canvis

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU 59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

LLENGUATGES I ENTORNS DE PRECAUCIOacute TREBALLADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

EL RADAR

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 5: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 5

SOBRE EL RADARAls treballadors de ThoughtWorks els apassiona la tecnologia La creem lrsquoinvestiguem la posem a provala compartim gragravecies al codi obert escrivim sobre ella i sempre la volem millorar per a beneficiar a tothom La nostra missioacute eacutes arribar a lrsquoexcelmiddotlegravencia i revolucionarla informagravetica Amb aquesta missioacute en ment creemi compartim el Radar Tecnologravegic El Radar el crea el gabinet drsquoassessors de ThoughtWorks Technology un grup de liacuteders segraveniors de ThoughtWorks Es reuneixen periogravedicament per a parlar sobre lrsquoestrategravegia global de ThoughtWorks i les tendegravencies tecnologravegiques que tenen un impacte significatiu sobre la nostra industria

Aquest Radar captura lrsquoessegravencia de les xerrades del gabinet drsquoassessor i la comparteix en un format adequat

RADAR DrsquoUN COP DrsquoULL

Els elements nous o que han canviat de manera significativa des de lrsquouacuteltim Radar es representen amb un triangle mentre que els elements que no srsquohan mogut es representen amb un cercle

El nostre radar teacute visioacute de futur Per a deixar espai per a nous elements deixem que elements que no srsquohan mogut recentment srsquoesvaeixin la qual cosa no eacutes un reflex del seu valor sinoacute meacutes beacute una limitacioacute del nostre Radar

NOU O CANVIS

SENSE CANVIS

PRECAUCIOacuteContinuar amb precaucioacute

4AVALUARVal la pena explorar-la per a poder entendre com afectaria llsquoempresa

3

PROVARVal la pena seguir investigantEacutes important entendre com desenvolupar aquesta habilitat Les empreses haurien de provar aquesta tecnologia en un projecte en el que es pogueacutes permetre el risc

2ADOPTARCreiem fermament que la industria hauria drsquoadoptar aquests elements Nosaltres els utilitzem quan ho creiem oportuacute en els nostres projectes

1

per a una gran varietat drsquoactors des de gerents de sistemes (CIO) fins a desenvolupadors El contingut del Radar srsquoha pensat com un resum conciacutes drsquoaquestes tecnologies

Recomanem que srsquoexplorin meacutes detalladament aquestes tecnologies El Radar teacute una naturalesa meacutes aviat gragravefica i agrupa els elements en tegravecniques eines plataformes i llenguatges i entorns de treball Si algun element pot aparegraveixer en meacutes drsquoun quadrant escollim el que ens sembla meacutes adient Agrupem aquests elements en 4 anells per a reflectir el que en pensemPer a meacutes informacioacute sobre el radar visiteu thoughtworkscomradarfaq

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

96 108

421 3

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 6

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvis Sense canvis

EL RADARTEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambiciose

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 7

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvisSense canvis

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU 59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

LLENGUATGES I ENTORNS DE PRECAUCIOacute TREBALLADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

EL RADAR

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 6: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 6

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvis Sense canvis

EL RADARTEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambiciose

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 7

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvisSense canvis

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU 59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

LLENGUATGES I ENTORNS DE PRECAUCIOacute TREBALLADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

EL RADAR

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 7: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 7

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

Nou o canvisSense canvis

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU 59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

LLENGUATGES I ENTORNS DE PRECAUCIOacute TREBALLADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

EL RADAR

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 8: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 8

Molta de la documentacioacute es pot substituir per codi llegible i proves En un moacuten drsquoarquitectura evolucionaria perograve eacutes important enregistrar certes decisions de disseny per a benefici tant de futurs membres de lrsquoequip com de revisions externes LrsquoENREGISTRAMENT DE DECISIONS DrsquoARQUITECTURA LLEUGERA eacutes una tegravecnica per capturar decisions de lrsquoarquitectura importants conjuntament amb el seu context i les seves consequumlegravencies Nosaltres recomanem enregistrar aquests detalls al sistema control de versions en lloc de a una wiki o pagravegina web ja que proporcionen un registre que estaragrave sincronitzat amb el codi Creiem que per a la majoria de projectes no hi ha cap motiu pel qual no utilitzar aquesta tegravecnica

Els uacuteltims 12 mesos hem vist un gran increment en lrsquointeregraves en les plataformes digitals Les companyies que volen crear noves solucions digitals de manera ragravepida i eficient estan creant plataformes internes que proporcionen als equips acceacutes directe a les APIs eines coneixements i suport de lrsquoempresa necessaris per crear i operar les seves progravepies solucions Nosaltres creiem que aquestes plataformes soacuten meacutes efectives

quan es tracten com a productes APLICAR LA GESTIOacute DE PRODUCTES A LES PLATAFORMES INTERNES implica establir una relacioacute drsquoempatia amb els consumidors interns (els desenvolupadors) i colmiddotlaborar amb ells en el disseny Els gestors de plataformes com a productes estableixen els fulls de ruta i srsquoasseguren que la plataforma aporti valor a lrsquoempresa i millori lrsquoexperiegravencia dels desenvolupadors Hi ha qui fins i tot crea una marca per a la seva plataforma interna i lrsquoutilitza per promocionar-la davant dels seus colmiddotlegues Els gestors de plataformes com a productes srsquoasseguren de la qualitat de la plataforma reuneixen megravetriques drsquouacutes i la milloren contiacutenuament Tractar la plataforma com un producte ajuda a crear un ecosistema i evita haver de tornar a crear una altra arquitectura orientada als serveis poc utilitzada y estancada

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts (Funcions drsquoaptitud arquitecturals)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

TEgraveCNIQUESADOPTAR1 Enregistrament de decisions drsquoarquitectura lleugera

PROVAR2 Aplicar la gestioacute de productes a les plataformes internes NOU3 Funcions drsquoaptitud arquitectural NOU4 Patroacute de bombolles autogravenomes NOU5 Enginyeria del Caos NOU6 Desacoblament de la gestioacute de secrets del codi font7 DesignOps NOU8 llegat en una caixa9 Microinterfiacutecies10 Canals per infrastructura com a codi NOU11 Arquitectures Serverless12 Desenvolupament de contenidors basant-se en proves NOU

AVALUAR13 Operacions informagravetiques algoriacutetmiques NOU14 Ethereum per aplicacions descentralitzades NOU15 Streaming drsquoesdeveniments com a font de veritat NOU16 Equips de produccioacute de plataformes17 Multinuacutevol NOU18 Xarxa de serveis NOU19 Sidecars per seguretat de punt final NOU20 Les tres Rs de la seguretat NOU

PRECAUCIOacute21 Instagravencia uacutenica drsquointegracioacute contiacutenua per a tots els equips22 Teatre IC23 Entorns de proves drsquointegracioacute a tota lrsquoempresa24 Recrean antipatrons ESB amb Kafka NOU25 Spec-based codegen

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 9: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 9

Inspirades per la computacioacute evolutiva les funcions drsquoaptitud srsquoutilitzen per expressar les possibilitats drsquouna solucioacute de disseny drsquoaconseguir els objectius establerts A lrsquohora de definir un algoritme evolutiu el dissenyador busca aconseguir un algoritme ldquomillorrdquo i soacuten les funcions drsquoaptitud les que defineixen el significat de ldquomillorrdquo en aquest context Una FUNCIONS DrsquoAPTITUD ARQUITECTURAL tal com es defineix a Building Evolutionary Architectures proporciona una avaluacioacute de la integritat de lrsquoobjectiu drsquoalgunes caracteriacutestiques arquitecturals que poden incloure criteris de verificacioacute existents com ara proves unitagraveries megravetriques monitoratge etc Nosaltres creiem que els arquitectes poden comunicar validar i preservar caracteriacutestiques arquitecturals de manera automagravetica i contiacutenua el que eacutes la clau per a construir arquitectures evolutives

Es poden utilitzar eines drsquointegracioacute contiacutenua (IC) i drsquoentrega contiacutenua (EC) per provar les configuracions de servidors la creacioacute drsquoimatges de servidors lrsquoaprovisionament de lrsquoentorn i la integracioacute drsquoentorns (Canals per infraestructura com a codi)

Moltes organitzacions amb les que treballem estan intentant utilitzar enfocaments drsquoenginyeria moderns per a la creacioacute de noves capacitats i caracteriacutestiques a la vegada que coexisteixen amb tota una segraverie de sistemes heretats Una antiga estrategravegia que basant-nos en la nostra experiegravencia estagrave sent cada vegada meacutes uacutetil en casos com aquests eacutes el PATROacute DE BOMBOLLES AUTOgraveNOMES de Eric Evans Aquest enfocament implica crear un nou context per al desenvolupament drsquoaplicacions protegint-lo de tot lrsquoembolic del moacuten heretat Es tracta drsquoanar un pas meacutes enllagrave de lrsquouacutes de capes anticorrupcioacute Doacutena al nou context de bombolles control absolut sobre les seves dades de suport i aleshores es manteacute actualitzat de manera asiacutencrona amb els sistemes heretats Es necessita una mica de feina per protegir les fronteres de la bombolla i fer que els dos mons siguin consistents perograve lrsquoautonomia i la reduccioacute de friccions durant el desenvolupament que srsquoaconsegueix eacutes un gran primer pas cap a una futura arquitectura modernitzada

A edicions anteriors del Radar hem parlat de lrsquouacutes de lrsquoeina de Netflix Chaos Monkey per veure la capacitat drsquoun sistema actiu de fer front a talls en la produccioacute

desactivant instagravencies aleatograveries i mesurant els resultats LrsquoENGINYERIA DEL CAOS eacutes el nom que se li estagrave donant a lrsquoaplicacioacute meacutes extensa drsquoaquesta tegravecnica Duent a terme experiments en sistemes en produccioacute podem estar segurs que aquells sistemes funcionen correctament en condicions turbulentes Un bon lloc on comenccedilar a entendre aquesta tegravecnica eacutes la web Principles of Chaos Engineering

DESIGNOPS inspirat pel moviment DevOps eacutes un canvi cultural i una segraverie de pragravectiques que permeten redissenyar productes sense posar en perill la qualitat la coheregravencia del servei o lrsquoautonomia de lrsquoequip DesignOps promou la creacioacute i lrsquoevolucioacute drsquouna infraestructura de disseny que minimitzi lrsquoesforccedil necessari per crear nous conceptes i variacions drsquointerfiacutecies drsquousuari i lrsquoestabliment drsquouna comunicacioacute ragravepida i fiable amb lrsquousuari final Amb eines com Storybook que promouen la colmiddotlaboracioacute es redueix al miacutenim la necessitat drsquoanagravelisis previs i de transferegravencies drsquoespecificacions Gragravecies a DesignOps el disseny estagrave passant de ser una feina especiacutefica a ser part de la feina de tothom

Hem vist com introduir arquitectures de microserveis teacute grans beneficis ja que permet als equips drsquoescalar lrsquoentrega de serveis desplegats i mantinguts independentment Tambeacute hem vist perograve com molta gent ha creat interfiacutecies monoliacutetiques a sobre dels seus serveis en forma drsquoaplicacions web uacuteniques i pesades El nostre enfocament preferit (i que ja hem provat) eacutes el de dividir el codi del navegador en MICROINTERFIacuteCIES Aixiacute lrsquoaplicacioacute web es divideix segons les seves funcionalitats i cada funcionalitat estagrave controlada pel seu propi equip Aixograve assegura que es desenvolupa posa a prova i srsquoimplementen de manera independent de la resta Existeixen diverses tegravecniques per a recombinar les funcionalitats en una experiegravencia drsquousuari cohesiva ja sigui com a components o com a pagravegines

Lrsquouacutes de canals drsquoentrega contiacutenua per orquestrar el proceacutes de lliurament de programari srsquoestagrave convertint en la norma No obstant aixograve el fet de provar automagraveticament els canvis al codi drsquoinfraestructura no estagrave tan estegraves Es poden utilitzar eines drsquointegracioacute contiacutenua (CI) i drsquoentrega contiacutenua (CD) per provar les configuracions de servidors (com ara cookbooks de Chef mograveduls Puppet o playbooks de Ansible) la creacioacute drsquoimatges de servidors (com ara Packer)

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 10: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 10

lrsquoaprovisionament de lrsquoentorn (com ara Terraform o CloudFormation) i la integracioacute drsquoentorns Lrsquouacutes de CANALS PER INFRASTRUCTURA COM A CODI permet trobar errors abans drsquoaplicar els canvis a lrsquoentorn operacional incloent els entorns usats pel desenvolupament i les proves Tambeacute ofereixen una manera drsquoassegurar que les eines de la infraestructura srsquoexecuten consistentment des drsquoagents CICD en lloc de que srsquoexecutin des drsquoestacions individuals Encara queden perograve diversos reptes com ara el feedback meacutes lent associat als contenidors i les magravequines virtuals Tot i aixiacute creiem que eacutes una tegravecnica molt interessant

Lrsquouacutes drsquoARQUITECTURES SERVERLESS srsquoha tornat ragravepidament una opcioacute vagravelida per a organitzacions desplegant aplicacions al nuacutevol amb una gran quantitat drsquoopcions disponibles pel desplegament Hi ha fins i tot organitzacions tradicionalment conservadores que estan utilitzant parcialment algunes tecnologies sense servidor La major part de la discussioacute es centra en les Funcions com a Servei (per exemple AWS Lambda Cloud Functions de Google o Funcions drsquoAzure) mentre que els patrons apropiats drsquouacutes encara estan apareixent Desplegar funcions sense servidor elimina indubtablement lrsquoesforccedil que suposa tradicionalment la configuracioacute i la gestioacute del servidor i del sistema operatiu Les funcions sense servidor perograve no sempre soacuten la millor opcioacute De moment srsquoha drsquoestar preparat per a fer un pas enrere i desplegar contenidors i fins i tot instagravencies del servidor per a requeriments especiacutefics Actualment perograve altres components de lrsquoarquitectura sense servidors com ara el Backend com a servei srsquohan pragravecticament tornat la opcioacute per defecte

Molts equips de desenvolupadors han adoptat pels seus beneficis pragravectiques de desenvolupament basat en proves per escriure codi drsquoaplicacions Altres han optat per utilitzar contenidors per empaquetar i desplegar el seu programari i com ja eacutes normal utilitzar scripts automagravetics per crear els contenidors El que hem vist molt pocs equips fer eacutes combinar les dues tegravecniques i desenvolupar el contenidor basant-se en proves Amb entorns de treball com Serverspec i Goss es pot aconseguir la funcionalitat desitjada tant per contenidors aiumlllats com orquestrats amb un bucle de realimentacioacute curt Aixograve vol dir que es pot seguir utilitzant els mateixos principis que ja es coneixen per escriure codi DESENVOLUPAMENT DE CONTENIDORS BASANT-SE EN PROVES La nostra experiegravencia inicial ha sigut molt positiva

La quantitat de dades recollides per operacions informagravetiques no ha deixat de creacuteixer durant anys La moda pels microserveis per exemple implica que cada vegada hi ha meacutes aplicacions que creen les seves progravepies dades operacionals i eines com Splunk Prometheus o la pila ELK faciliten lrsquoenregistrament i el processament de dades per aconseguir informacioacute operacional Quan es combina amb eines drsquoaprenentatge automagravetic cada vegada meacutes democratitzades eacutes inevitable que els operadors comencin a incorporar models estadiacutestics i algoritmes de classificacioacute a les seves eines Tot i que aquests algoritmes ja fa anys que estan disponibles i srsquohan fet diversos intents per automatitzar la gestioacute de serveis tot just comencem a entendre com poden colmiddotlaborar magravequines i humans per identificar meacutes aviat mancances o la raoacute drsquoalguns errors Tot i el risc que les OPERACIONS INFORMAgraveTIQUES ALGORIacuteTMIQUES no acabin sent tant importants com sembla la millora constant dels algoritmes drsquoaprenentatge automagravetic canviaragrave sense dubte el paper dels humans en la gestioacute dels centres de dades del futur

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals (Ethereum per aplicacions descentralitzades)

Les cadenes de blocs han causat gran excitacioacute i srsquohan considerat la panacea per tot el relacionat amb el fintech des de la banca fins a la transparegravencia en les cadenes de subministrament passant per les monedes digitals A Radars anteriors hem parlat drsquoEthereum per les seves caracteriacutestiques i funcions entre les quals es troben els contractes intelmiddotligents Actualment veiem meacutes desenvolupament utilitzant ETHEREUM PER APLICACIONS DESCENTRALITZADES a drsquoaltres agraverees Tot i que segueix sent una tecnologia molt jove creiem que srsquoutilitzaragrave per desenvolupar aplicacions descentralitzades meacutes enllagrave de les criptodivises i la banca

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 11: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 11

A mesura que les plataformes de streaming drsquoesdeveniments com ara Apache Kafka soacuten cada cop meacutes populars molta gent les veu com cues de missatges avanccedilades que srsquoutilitzen uacutenicament per transmetre esdeveniments Fins i tot quan srsquoutilitza drsquoaquesta manera el streaming drsquoesdeveniments teacute els seus beneficis sobre les cues de missatges tradicionals A nosaltres perograve ens interessa meacutes saber com la gent utilitza el STREAMING DrsquoESDEVENIMENTS COM A FONT DE VERITAT amb plataformes (particularment Kafka) com a lloc drsquoemmagatzematge primari per dades com a esdeveniments immutables Un servei amb un disseny de Event Sourcing per exemple pot utilitzar Kafka i el seu emmagatzematge drsquoesdeveniments i fer que aixiacute altres serveis puguin utilitzar aquells esdeveniments Aquesta tegravecnica teacute el potencial de reduir la duplicacioacute drsquoesforccedilos entre la persistegravencia local i la integracioacute

Els principals proveiumldors de serveis al nuacutevol (Amazon Microsoft i Google) estan immersos en una ferotge carrera per la paritat en les capacitats bagravesiques mentre que els seus productes soacuten nomeacutes marginalment diferents Aixograve estagrave causant que algunes organitzacions adoptin una estrategravegia MULTINUacuteVOL en lloc drsquoutilitzar nomeacutes un proveiumldor utilitzen diferents proveiumldors per a diferents tipus de treballs segons el que vagi millor per cada feina Aixiacute es podria utilitzar AWS per serveis estagravendards perograve Google per lrsquoaprenentatge automagravetic Azure per aplicacions NET que utilitzen SQLServer o utilitzar la solucioacute del consorci de cadenes de blocs Ethereum Aquesta estrategravegia eacutes diferent de les estrategravegies antinuacutevol de buscar la portabilitat entre proveiumldors ja que soacuten cares i forcen el pensament de miacutenim comuacute denominador El pensament multinuacutevol en canvi es centra en utilitzar el millor de cada servei al nuacutevol

Una xarxa de serveis ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB (Xarxa de serveis)

A mesura que grans organitzacions tenen equips meacutes autogravenoms amb els seus propis microserveis com poden assegurar la consistegravencia i la compatibilitat entre serveis sense dependre drsquouna estructura de

servidor centralitzat Per quegrave funcionin conjuntament de manera eficient fins i tot els microserveis autogravenoms necessiten seguir alguns estagravendards organitzatius Una XARXA DE SERVEIS ofereix una plataforma consistent i segura per descobrir traccedilar monitorar i ocupar-se dels errors sense la necessitat drsquoun recurs compartit com una API gateway o ESB Una implementacioacute tiacutepica implica processos lleugers de proxy invers desplegats amb cada servei per exemple en un contenidor separat Aquests servidors es comuniquen amb registres de serveis proveiumldors drsquoidentitat agregadors de registres etc La interoperabilitat i la visibilitat dels serveis es doacutena gragravecies a una implementacioacute compartida drsquoaquest proxy i no a una instagravencia compartida Hem sigut defensors de llsquoenfocament descentralitzat dels microserveis des de ja fa un temps i ens agrada veure aparegraveixer aquest patroacute Projectes de codi obert com linkerd i Istio seguiran madurant i faran que les xarxes de serveis siguin encara meacutes fagravecils drsquoimplementar

A causa del gran nombre de serveis que exposen les seves caracteriacutestiques i capacitats a traveacutes de APIs i de la seva superfiacutecie drsquoatac meacutes gran les arquitectures de microserveis han de tenir una arquitectura de seguretat de confianccedila zero no confiiumls verifica No obstant aixograve sovint srsquoobvien els controls de seguretat en les comunicacions entre serveis per culpa de la major complexitat del codi del servei i de la falta de llibreries i de suport al llenguatge en entorns poliglots Per reduir aquesta complexitat alguns equips deleguen la seguretat a sidecars que es troben fora del proceacutes eacutes a dir un proceacutes o contenidor que es desplega i programa amb tots els serveis que comparteixen el mateix context drsquoexecucioacute el mateix servidor i la mateixa identitat Els sidecars implementen capacitats de seguretat com ara lrsquoencriptacioacute transparent de la comunicacioacute i la seguretat de la capa de transport (TLS per les sigles en anglegraves) aixiacute com lrsquoautenticacioacute i lrsquoautoritzacioacute del servei o de lrsquousuari final Recomanem donar un cop drsquoull a Istio linkerd o Envoy abans drsquoimplementar SIDECARS PER SEGURETAT DE PUNT FINAL

Els enfocaments tradicionals de la seguretat empresarial sovint busquen tancar-ho tot i alentir els canvis Sabem perograve que com meacutes trigui un atacant a posar en perill un sistema meacutes gran eacutes el mal potencial Les tres Rs de la seguretat empresarial rotar reparar i repavimentar aprofiten lrsquoautomatitzacioacute de la infraestructura i lrsquoentrega contiacutenua per eliminar les oportunitats drsquoatac Rotar les credencials aplicar

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 12: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 12

pedaccedilos tan aviat com estan disponibles i tornar a construir sistemes des drsquoestats anteriors segurs tot aixograve en quumlestioacute de minuts o hores fa que sigui molt difiacutecil que els atacants tinguin egravexit La tegravecnica de LES TRES RS DE LA SEGURETAT eacutes possible gragravecies als avenccedilos en les arquitectures al nuacutevol modernes Quan es creen i proven aplicacions a traveacutes de canals totalment automatitzats i es despleguen com a contenidors un pedaccedil de seguretat no eacutes meacutes que una altra petita publicacioacute que es pot enviar fagravecilment amb nomeacutes un clic Per seguir les millors pragravectiques de sistemes distribuiumlts perograve els desenvolupadors han de dissenyar les seves aplicacions de tal manera que puguin resistir caigudes dels servidors Aixograve eacutes similar a lrsquoimpacte drsquoimplementar Chaos Monkey a un entorn

Kafka srsquoestagrave tornant molt popular com a solucioacute de missatgeria i a la vegada Kafka Streams eacutes al capdavant de lrsquointeregraves per les arquitectures de streaming Estem veient organitzacions perograve que a la vegada que comencen a posar Kafka al centre de les seves plataformes de dades i drsquoaplicacions RECREAN ANTIPATRONS ESB AMB KAFKA centralitzant els components de lrsquoecosistema Kafka com ara connectors i processadors de transmissioacute en lloc de permetre que els equips de productes o serveis srsquoencarreguin drsquoaquests components Aixograve ens recorda antipatrons ESB realment problemagravetics en els quals es ficava cada vegada meacutes logravegica orquestracioacute i transformacioacute a ESB gestionades centralment creant aixiacute una gran dependegravencia a lrsquoequip centralitzat Volem parlar drsquoaquest tema per evitar meacutes implementacions drsquoaquest patroacute defectuoacutes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 13: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 13

Des de lrsquouacuteltima vegada que vam parlar de KUBERNETES al Radar srsquoha convertit en la solucioacute estagravendard per a la majoria dels nostres clients a lrsquohora de desplegar contenidors a un cluacutester de magravequines Les alternatives existents no comptaven amb la mateixa popularitat i hem vist com en alguns casos alguns clients estan canviant el seu ldquomotorrdquo per Kubernetes Kubernetes srsquoha tornat la plataforma de gestioacute de contenidors per defecte per a grans plataformes puacutebliques de sistemes al nuacutevol entre les quals es troba el Microsoft Azure Container Service i Google Cloud (veure GKE) A meacutes hi ha molts altres productes que estan enriquint lrsquoecosistema de Kubernetes Les plataformes que intenten amagar Kubernetes sota una capa drsquoabstraccioacute perograve encara han de demostrar la seva vagravelua

Estem veient un increment en lrsquoadopcioacute de NET Core un entorn de treball de codi obert i multi-plataforma per a programari NET Core possibilita el desenvolupament i desplegament drsquoaplicacions NET

a Windows macOS i Linux Amb el llanccedilament de NET Standard 20 que incrementa el nombre drsquoAPIs estagravendards entre les plataformes NET el camiacute per migrar cap a NET Core queda meacutes clar Els problemes relacionats amb el suport de llibreries a NET Core estan desapareixen poc a poc i ja hi ha eines multiplataforma de primera classe disponibles la qual cosa permet el desenvolupament eficient a plataformes que no soacuten Windows Es proporcionen imatges segures de Docker per facilitar la integracioacute de serveis NET Core a entorns de contenidors Lrsquoactitud positiva de la comunitat i el feedback dels nostres projectes indiquen que NET Core estagrave llest pel seu uacutes generalitzat

Les proves de cagraverrega srsquohan tornat meacutes fagravecils gragravecies a la maduresa drsquoeines com Gatling i Locust i a la vegada infraestructures elagravestiques de serveis al nuacutevol possibiliten simular un gran nombre drsquoinstagravencies de clients Ens agrada veure com Flood i altres plataformes de serveis al nuacutevol van meacutes enllagrave utilitzant aquestes

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

PLATAFORMESADOPTAR26 Kubernetes

PROVAR27 NET Core28 AWS Device Farm29 Flood IO NOU30 Google Cloud Platform NOU31 Keycloak32 OpenTracing33 Unity meacutes enllagrave dels videojocs34 WeChat NOU

AVALUAR35 Azure Service Fabric NOU36 Cloud Spanner NOU37 Corda NOU38 Cosmos DB NOU39 DialogFlow40 GKE NOU41 Hyperledger42 Kafka Streams43 Servidor de sintaxi del Llenguatge NOU44 LoRaWAN NOU45 MapD NOU46 Mosquitto47 Netlify NOU48 PlatformIO49 TensorFlow Serving NOU50 Plataformes de veu51 Windows Containers NOU

PRECAUCIOacute52 API gateway massa ambicioses

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 14: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 14

tecnologies Flood IO eacutes un servei de proves de cagraverrega SaaS que ajuda a distribuir i executar proves a centenars de servidors al nuacutevol El nostre equip ha descobert que eacutes molt simple migrar les proves de rendiment a Flood reutilitzant els scripts ja existents de Gatling

A mesura que GOOGLE CLOUD PLATFORM (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis els clients de tot el moacuten el poden tenir en compte per a les seves estrategravegies al nuacutevol Hi ha certes agraverees on GCP ha aconseguit igualar-se amb el seu principal competidor Amazon Web Services pel que fa a caracteriacutestiques i hi ha drsquoaltres agraverees on fins i tot ha aconseguit diferenciar-se gragravecies especialment a plataformes drsquoaprenentatge automagravetic eines drsquoenginyeria de dades i una solucioacute pragravectica de Kubernetes com a servei (GKE) A la pragravectica els nostres equips nomeacutes tenen bones paraules sobre lrsquoexperiegravencia de desenvolupar amb les eines i APIs de GCP

A mesura que Google Cloud Platform (GCP) srsquoexpandeix en termes geogragravefics i madura en termes de serveis (Google Cloud Platform)

A una arquitectura de microserveis o a qualsevol altre tipus drsquoarquitectura distribuiumlda una de les necessitats meacutes comunes eacutes la drsquoassegurar els serveis o APIs a traveacutes drsquoopcions drsquoautenticacioacute i autoritzacioacute Aquiacute eacutes on KEYCLOAK entra en escena Keycloak eacutes una solucioacute de codi obert de gestioacute drsquoidentitat i drsquoacceacutes que facilita el fet drsquoassegurar aplicacions o microserveis sense cap o gairebeacute cap codi Directe de fagravebrica permet lrsquoinici de sessioacute individual a traveacutes de dades de xarxes socials i protocols estagravendard com ara OpenID Connect OAuth 20 i SAML Els nostres equips utilitzen aquesta eina i tenen intencioacute de seguir-ho fent en el futur Requereix perograve una mica de feina per configurar-la i com que srsquoha de configurar tant quan srsquoinicialitza com quan srsquoutilitza eacutes necessari escriure scripts per assegurar que els desplegaments es poden repetir

A Radars anteriors hem mencionat que Unity srsquoha convertit en la plataforma drsquoeleccioacute per al desenvolupament drsquoaplicacions de RV i RA perquegrave proporciona les abstraccions i les eines drsquouna plataforma meacutes madura perograve sent meacutes accessible

que la seva principal alternativa Unreal Engine Amb la recent introduccioacute de ARKit per iOS i ARCore per Android les dues principals plataformes mogravebils ara compten amb SDKs potents i natius per crear aplicacions de realitat augmentada Creiem perograve que molts equips especialment aquells que tenen poca experiegravencia creant jocs es beneficiaran drsquoutilitzar abstraccions com Unity raoacute per la qual parlem de UNITY MEacuteS ENLLAgrave DELS VIDEOJOCS Aixograve permet que els desenvolupadors que no estan familiaritzats amb la tecnologia es centrin en un SDK i ofereix una solucioacute per a la gran quantitat de dispositius especialment Android que no estan suportats pels SDKs natius

WECHAT sovint vist com un equivalent de WhatsApp srsquoestagrave convertint en la plataforma de facto per empreses a la Xina Eacutes possible que molta gent no ho sagravepiga perograve WeChat eacutes a meacutes una de les plataformes de pagament online meacutes populars Amb el seu sistema de gestioacute de continguts (CMS) i la seva gestioacute drsquoidentitats els petits comerccedilos estan operant exclusivament amb WeChat Gragravecies a la funcionalitat de comptes de servei grans organitzacions poden connectar el seu sistema intern amb els seus empleats Com que meacutes del 70 dels xinesos utilitzen WeChat eacutes una plataforma a tenir en compte per les empreses que volen expandir-se al mercat xinegraves

AZURE SERVICE FABRIC eacutes una plataforma de sistemes distribuiumlts creada per a microserveis i contenidors Es pot comparar amb eines drsquoorquestracioacute de contenidors com Kubernetes perograve tambeacute funciona amb serveis antics normals Es pot utilitzar drsquouna infinitat de maneres des de serveis simples en el llenguatge que es vulgui fins a contenidors Docker o serveis fets amb un SDK Des que es va llanccedilar fa un parell drsquoanys ha anat incorporant meacutes caracteriacutestiques incloent el suport per contenidors a Linux Kubernetes ha sigut lrsquoestrella entre les eines drsquoorquestracioacute de contenidors perograve Service Fabric eacutes la opcioacute estagravendard per aplicacions NET A ThoughtWorks lrsquoestem utilitzant en alguns projectes i ens agrada el que veiem de moment

CLOUD SPANNER eacutes un servei de base de dades relacionals totalment gestionades que ofereix una alta disponibilitat i gran consistegravencia sense comprometre la lategravencia Ja fa temps que Google treballa en una base de dades distribuiumlda globalment anomenada Spanner i fa poc que lrsquoha presentat al moacuten sota el nom de Cloud Spanner Permet escalar instagravencies drsquoun node

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 15: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 15

a milers de nodes per tot el moacuten sense preocupar-se per la consistegravencia de les dades Utilitzant TrueTime un rellotge altament disponible i distribuiumlt Cloud Spanner proporciona una alta consistegravencia per lectures i instantagravenies Es pot utilitzar SQL per llegir dades de Cloud Spanner perograve per operacions drsquoescriptura cal utilitzar la seva API RPC Tot i que no tots els serveis requereixen bases de dades distribuiumlbles a escala global la disponibilitat general de Cloud Spanner eacutes un gran canvi en la manera com pensem en bases de dades i el seu disseny estagrave influenciant productes de codi obert com CockroachDB

R3 un important actor en el moacuten de les cadenes de blocs va decidir despreacutes de molt investigar que les cadenes de blocs no responien al seu objectiu i van crear CORDA Corda eacutes una plataforma de tecnologia de registre comptable distribuiumlt (DLT en anglegraves) que es centra en el camp de les finances R3 teacute una proposta de valor molt clara i sap que el seu problema requereix una tecnologia pragmagravetica Aixograve coincideix amb la nostra experiegravencia les solucions actuals de cadenes de blocs poden no ser la opcioacute meacutes raonable per alguns negocis a causa del cost de la mineria i la ineficiegravencia operacional Tot i que de moment la nostra experiegravencia desenvolupant amb Corda no ha sigut la millor les APIs encara soacuten inestables despreacutes del llanccedilament de la versioacute 10 esperem veure com lrsquoespai DLT segueix madurant

COSMOS DB eacutes el servei de base de dades multimodel i distribuiumlt globalment de Microsoft que srsquoha fet disponible a gran escala aquest any Mentre la majoria de bases de dades NoSQL ofereixen consistegravencies ajustables Cosmos DB ho porta un pas meacutes enllagrave i ofereix 5 models diferents de consistegravencia Val la pena remarcar que tambeacute suporta models muacuteltiples (valor clau document famiacutelia de la columna i gragravefic) tots els quals srsquoassocien amb el seu model intern de dades anomenat atom-record-sequence (ARS) Un aspecte interessant de Cosmos DB eacutes que ofereix acords de nivell de servei (SLAs) a la seva lategravencia al seu rendiment a la seva consistegravencia i a la seva disponibilitat El seu gran rang drsquoaplicacions possibles ha marcat un estagravendard molt alt pels altres proveiumldors de serveis al nuacutevol

Paralmiddotlelament al recent augment en lrsquointeregraves pels bots conversacionals i les plataformes de veu hem vist una proliferacioacute drsquoeines i plataformes que proporcionen serveis per extreure la intencionalitat del text i la

gestioacute de fluxos conversacionals als quals eacutes possible connectar-se DIALOGFLOW (abans conegut com APIai) adquirit per Google eacutes un servei de ldquocomprensioacute-de-llenguatge-natural com a serveirdquo que competeix amb witai i Amazon Lex entre drsquoaltres actors drsquoaquest camp

Tot i que lrsquoecosistema de desenvolupament de programari estagrave gravitant cap a Kubernetes com a plataforma drsquoorquestracioacute de contenidors fer anar cluacutesters de Kubernetes segueix sent una tasca operacionalment complexa GKE (Google Container Engine) eacutes una solucioacute Kubernetes gestionada per desplegar aplicacions contenidoritzades que alleugen el cost operacional de fer anar i mantenir cluacutesters Kubernetes Els nostres equips han tingut una bona experiegravencia utilitzant GKE fent que la plataforma sigui la que aplica els pedaccedilos de seguretat monitoritzi i repari els nodes i gestioni xarxes multicluacutester i multiregioacute Segons la nostra experiegravencia lrsquoenfocament de Google de ldquoles APIs primerrdquo a lrsquohora drsquoexposar les capacitats drsquouna plataforma aixiacute com drsquoutilitzar estagravendards de la industria com OAuth per lrsquoautoritzacioacute de serveis millora lrsquoexperiegravencia del desenvolupador Eacutes important tenir en compte que tot i els esforccedilos dels desenvolupadors drsquoaiumlllar els consumidors dels canvis interns GKE no para de creacuteixer i aixograve ja ens ha afectat temporalment Creiem que la Infraestructura com a codi seguiragrave madurant amb Terraform a GKE i eines similars

Els servidors de llenguatge introdueixen la capacitat de fer refactoring qualsevol editor de textos pugui accedir a una API per a quegrave treballi amb lrsquoAST (Servidor de sintaxi del llenguatge)

KAFKA STREAMS eacutes una llibreria de baix pes per crear aplicacions de streaming Srsquoha dissenyat amb lrsquoobjectiu de simplificar prou el processament de serveis de streaming com per fer-ho fagravecilment accessible com a model establert de programacioacute drsquoaplicacions per a serveis asiacutencrons Pot ser una bona alternativa en els casos en quegrave es vol aplicar un model de processament de streaming a un problema sense haver de recoacuterrer a la complexitat drsquoexecutar un cluacutester (normalment introduiumlt per entorns de processament de streaming totalment desenvolupats) Nous desenvolupaments inclouen una cosa similar a lrsquoentrega ldquoexactly-oncerdquo per emmagatzemar lrsquoestat drsquouna transmissioacute en un cluacutester

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 16: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 16

Kafka introduint idempotegravencia a consumidors Kafka Ens agrada la manera pragmagravetica com han decidit mitigar els missatges duplicats a la seva infraestructuraGran part de la potegravencia drsquoentorns integrats de desenvolupament (IDEs) ve de la seva habilitat per convertir un programa en un arbre de sintaxi abstracta (AST per les sigles en anglegraves) i tot seguit utilitzar aquest AST per analitzar i manipular el programa Aixograve suporta caracteriacutestiques com autocompletar trobada de crides i refatoritzacioacute Els servidors de llenguatge introdueixen aquesta capacitat a un proceacutes que permet que qualsevol editor de textos pugui accedir a una API per quegrave treballi amb lrsquoAST Microsoft ha liderat la creacioacute del SERVIDOR DE SINTAXI DEL LLENGUATGE (LSP per les sigles en anglegraves) creat a partir dels seus projectes de servidor OmniSharp i TypeScript Qualsevol editor que utilitzi aquest protocol pot treballar amb qualsevol llenguatge que tingui un servidor compatible amb LSP Aixograve vol dir doncs que es pot seguir utilitzant el mateix editor de sempre sense privar-se dels rics modes drsquoedicioacute de molts llenguatges la qual cosa eacutes una gran noticia pels amants drsquoEmacs

LORAWAN eacutes una xarxa de baixa potegravencia i gran abast dissenyada per tenir un baix consum drsquoenergia i un gran abast utilitzant taxes de bits baixes Possibilita la comunicacioacute entre dispositius i portes drsquoenllaccedil per tot seguit reenviar les dades a per exemple aplicacions o servidors Es seu uacutes meacutes tiacutepic eacutes amb una segraverie de sensors o amb dispositius del internet de les coses (IoT per les sigles en anglegraves) pels quals eacutes molt important comptar amb una gran autonomia i un gran abast LoRaWAN soluciona dos dels problemes clau a lrsquohora drsquoutilitzar Wi-Fi per aquest tipus drsquoaplicacions abast i consum drsquoenergia Hi ha diverses implementacions drsquoentre les quals destaca The Things Network una implementacioacute gratuiumlta i de codi obert

A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors (TensorFlow Serving)

MAPD eacutes una base de dades columnar en memograveria amb suport per SQL creada per utilitzar la GPU Hem discutit sobre si la cagraverrega de la base de dades eacutes drsquoES o computacional perograve hi ha instagravencies on

el paralmiddotlelisme de la GPU combinat amb la gran amplada de banda de la memograveria VRAM pot ser molt uacutetil MapD gestiona a la memograveria VRAM de manera transparent les dades que meacutes srsquoutilitzen (com ara columnes involucrades en la funcioacute ldquogroup byrdquo filtres cagravelculs i condicions) i emmagatzema la resta a la memograveria principal Gragravecies a aquesta configuracioacute MapD aconsegueix una gran capacitat de consulta sense necessitar iacutendexs Tot i que hi ha altres opcions de bases de dades de GPU al mercat MapD eacutes al capdavant drsquoaquest sector perquegrave va obrir el codi de la seva base de dades essencial i perquegrave fa part de la iniciativa GPU Open Analytics Initiative Si es teacute una alta cagraverrega computacional es pot explotar el paralmiddotlelisme que ens proporciona la GPU nosaltres recomanem provar MapD

Ens agrada NETLIFY permet crear contingut estagravetic drsquouna pagravegina web penjar-ho a GitHub i tenir la web activa i disponible de manera fagravecil i ragravepida Compta amb una liacutenia drsquoordres per controlar el proceacutes disponible suporta les xarxes de lliurament de contingut (CDNs per les sigles en anglegraves) pot treballar conjuntament amb eines com Grunt i el meacutes important Netlify suporta HTTPS

Els models drsquoaprenentatge automagravetic estan comenccedilant a arribar a les aplicacions del dia a dia Quan disposen de suficients dades aquests algoritmes poden solucionar problemes pels quals no fa gaire srsquohagueacutes necessitat models estadiacutestics complexos o la tegravecnica de la prova i error A mida que es passa drsquousos experimentals a la produccioacute es necessita una manera fiable drsquoallotjar i desplegar els models que es poden accedir remotament i escalar segons el nombre de consumidors TENSORFLOW SERVING soluciona part del problema exposant una interfiacutecie gRPC remota a un model exportat la qual cosa permet desplegar un model entrenat de diferents maneres TensorFlow Serving tambeacute accepta una onada de models per incorporar actualitzacions drsquoaprenentatge continu i els seus desenvolupadors mantenen un arxiu Dockerfile per facilitar el proceacutes de desplegament Suposadament srsquoha utilitzat gPRC per ser coherent amb el model drsquoexecucioacute TensorFlow perograve generalment no ens refiem massa de protocols que demanen generar codi i enllaccedilos natius

Microsoft srsquoestagrave posant al dia en el moacuten dels contenidors amb WINDOWS CONTAINERS En el moment drsquoescriure aquestes liacutenies Microsoft proporciona dues imatges del sistema operatiu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 17: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 17

Windows en contenidors Docker Windows Server 2016 Server Core i Windows Server 2016 Nano Server Tot i que Windows Containers encara pot millorar per exemple reduint la mida de les imatges i enriquint el suport i la documentacioacute de lrsquoecosistema els nostres equips lrsquohan comenccedilat a utilitzar en escenaris on drsquoaltres contenidors han funcionat correctament anteriorment com ara agents de compilacioacute

Ens segueix preocupant la logravegica empresarial i la orquestracioacute de processos que srsquoestagrave implementant al programari intermediari especialment quan requereix

capacitats i eines drsquoalt nivell per crear punts uacutenics drsquoescalacioacute i control Els proveiumldors del mercat altament competitiu de les API gateway segueixen aquesta moda incorporant caracteriacutestiques gragravecies a les quals esperen diferenciar els seus productes El resultat soacuten API GATEWAY MASSA AMBICIOSES la funcionalitat de les quals a sobre del que eacutes en essegravencia un proxy invers fomenta dissenys que segueixen sent difiacutecils de provar i desplegar Les API gateways siacute que soacuten uacutetils a lrsquohora de tractar alguns problemes en concret com ara lrsquoautenticacioacute i el control de tragravensit perograve les dades de qualsevol domini haurien de ser a les aplicacions o serveis

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 18: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 18

Als nostres equips els agrada molt lrsquoeina drsquointegracioacute i entrega contiacutenua BUILDKITE per la seva simplicitat i facilitat de configuracioacute Buildkite permet utilitzar les magravequines existents per executar compilacions ja sigui localment o al nuacutevol i instalmiddotlar una aplicacioacute agent de baix pes per connectar lrsquoagent de compilacioacute al servei allotjat Tenir aquest nivell de control sobre la configuracioacute de lrsquoagent de compilacioacute eacutes en molts casos un avantatge sobre lrsquouacutes drsquoagents allotjats

CIRCLECI eacutes un motor drsquointegracioacute contiacutenua venut com a SaaS in situ Per a molts dels nostres equips de desenvolupament CircleCI ha sigut lrsquoeina drsquoeleccioacute pel que fa a SaaS drsquoIC ja que necessitaven una pipeline de desplegament i compilacioacute fagravecil de configurar i de baixa friccioacute La versioacute 20 de CircleCI suporta fluxos de compilacioacute amb fluxos de connectivitat drsquoentrada i de sortida i portes manuals i desenvolupament per a mogravebils Permet que els desenvolupadors executin

els canals localment i srsquointegra sense problemes amb Slack i drsquoaltres sistemes de notificacions i alertes Recomanem que es revisin les pragravectiques de seguretat de CircleCI igual que es faria amb qualsevol altre producte SaaS que allotgi els actius drsquouna empresa

Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries (gopass)

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

EINESADOPTAR53 fastlane

PROVAR54 Buildkite NOU55 CircleCI NOU56 gopass NOU57 Headless Chrome per proves drsquointerfiacutecie NOU58 jsoniter NOU59 Prometheus60 Scikit-learn61 Entorn de treball sense servidor

AVALUAR62 Apex NOU63 assertj-swagger NOU64 Cypress NOU65 Flow NOU66 InSpec67 Jupyter NOU68 Kong API Gateway NOU69 kops NOU70 Lighthouse NOU71 Rendertron NOU72 Sonobuoy NOU73 spaCy74 Spinnaker75 Spring Cloud Contract NOU76 Yarn

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 19: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 19

GOPASS eacutes una solucioacute de gestioacute de contrasenyes per equips construiumlda sobre GPG i Git Eacutes un descendent de pass i incorpora caracteriacutestiques com suport per la gestioacute de receptors i emmagatzematge de muacuteltiples contrasenyes en un sol arbre funcionalitat de cerca interactiva suport per contrasenyes temporals drsquoun sol uacutes (TOTP per les sigles en anglegraves) i emmagatzematge de dades binagraveries Migrar les contrasenyes des de pass eacutes una tasca bastant senzilla perquegrave gopass eacutes altament compatible amb el format utilitzat per pass Aixograve a meacutes implica que es pot aconseguir la integracioacute en els fluxos drsquoaprovisionament gragravecies a una uacutenica crida a un secret guardat

Els usuaris de Chrome han tingut des de mitjans de 2017 la possibilitat drsquoutilitzar-lo en mode ldquoheadlessrdquo Aquesta opcioacute eacutes ideal per fer proves de navegador sense la necessitat de mostrar res en una pantalla Aixograve era antigament el territori de PhantomJS perograve Headless Chrome estagrave substituint ragravepidament aquest enfocament de WebKit basat en JavaScript Les proves a Headless Chrome haurien drsquoanar molt meacutes ragravepid i comportar-se meacutes com un navegador real Els nostres equips perograve han vist que consumeix meacutes memograveria que PhantomJS Eacutes molt possible que gragravecies a tots els seus beneficis HEADLESS CHROME es converteixi en lrsquoestagravendard PER PROVES DrsquoINTERFIacuteCIE

Si srsquoestagrave busca un codificadordescodificador de JSON amb un alt rendiment a Go i Java val la pena donar un cop drsquoull a la llibreria de codi obert JSONITER Eacutes compatible amb el paquet de codificacioacute JSON estagravendard a Go

Hem vist millores constants i un augment en lrsquoadopcioacute de Prometheus lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud (Prometheus)

Hem vist millores constants i un augment en lrsquoadopcioacute de PROMETHEUS lrsquoeina de base de dades de segraveries temporals (TSDB) i monitoratge originalment desenvolupada per Soundcloud Prometheus suporta primordialment el model HTTP basat en la tecnologia

de tramesa induiumlda perograve tambeacute teacute suport per alertes la qual cosa el fa una part important de qualsevol joc drsquoeines En el moment drsquoescriure aquestes liacutenies Prometheus 20 eacutes en estat de prellanccedilament i segueix evolucionant Els desenvolupadores de Prometheus han centrat els seus esforccedilos en bases de dades de segraveries temporals essencials i en la varietat de megravetriques disponibles Grafana srsquoha convertit en lrsquoeina de visualitzacioacute drsquoinstruments drsquoeleccioacute pels usuaris de Prometheus i lrsquoeina porta incorporat el suport per Grafana Els nostres equips tambeacute creuen que el monitoratge de Prometheus complementa molt beacute les capacitats drsquoindexacioacute i de cerca drsquouna pila Elastic

Apex eacutes una eina per compilar desplegar i gestionar fagravecilment funcions AWS Lambda i que permet escriure funcions en llenguatges que encara no estan suportats nativament a AWS com ara Golang Rust o drsquoaltres Aixograve srsquoaconsegueix gragravecies a una petita llibreria shim de Nodejs que crea un proceacutes fill i processa esdeveniments a traveacutes de lrsquoentrada i la sortida estagravendard (stdin i stdout) Apex teacute moltes caracteriacutestiques que milloren lrsquoexperiegravencia del desenvolupador i a nosaltres ens agrada particularment lrsquohabilitat de provar funcions de manera local i de fer proves dels canvis abans drsquoaplicar-los als recursos de AWS

ASSERTJ-SWAGGER una llibreria de AssertJ permet validar la conformitat de la implementacioacute drsquouna API amb les especificacions del seu contracte Els nostres equips utilitzen assertj-swagger per descobrir problemes quan el punt final de la implementacioacute drsquouna API canvia sense actualitzar la seva especificacioacute Swagger o no aconsegueix publicar la documentacioacute actualitzada

Solucionar errors en proves completes a sistemes de CI pot ser una experiegravencia horrible especialment en mode headless Cypress eacutes una eina molt uacutetil que ajuda els desenvolupadors a crear fagravecilment proves completes i emmagatzema tots els passos en un viacutedeo en format MP4 En lloc de reproduir el problema en mode headless els desenvolupadors poden veure el viacutedeo per solucionar-lo Cypress no eacutes nomeacutes un entorn de proves sinoacute que eacutes una plataforma molt poderosa Actualment hem integrat la seva liacutenia drsquoordres (CLI) amb CI headless als nostres projectes

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 20: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 20

FLOW eacutes un verificador de tipatge estagravetic per JavaScript que permet incorporar la verificacioacute de tipatge al codi de manera incremental A diferegravencia de Typescript que eacutes un llenguatge diferent Flow es pot incorporar de manera gradual a qualsevol base de codi JavaScript que suporti la 5ordf 6ordf i 7ordf edicioacute de ECMAScript Nosaltres recomanem incorporar Flow als canals drsquointegracioacute contiacutenua comenccedilant pel codi que sigui meacutes necessari Flow millora la claredat del codi i la fiabilitat de la refaccioacute i troba errors de tipatge en els primers moments del desenvolupament

Durant lrsquouacuteltim parell drsquoanys hem vist un augment constant en la popularitat dels notebooks analiacutetics Es tracta drsquoaplicacions inspirades per Mathematica que combinen text visualitzacioacute i codi en un document computacional viu A Radars anteriors hem parlat de GorillaREPL una variant Clojure drsquoaquestes aplicacions No obstant aixograve lrsquoincrement en lrsquointeregraves per lrsquoaprenentatge automagravetic conjuntament amb lrsquoaparicioacute de Python com a llenguatge preferit pels que treballen en aquest agravembit ha fet que lrsquoatencioacute es mogueacutes cap als notebooks Python drsquoentre els quals sembla que el que teacute meacutes acceptacioacute entre els nostres equips eacutes JUPYTER

Kong eacutes una API Gateway de codi obert construiumlda i patrocinada per Mashape qui a meacutes teacute una proposta que integra Kong amb les seves progravepies eines drsquoanagravelisi drsquoAPIs i de portals de desenvolupadors Es poden desplegar com a API Gateway extern o com a proxy API intern amb una gran varietat de configuracions A traveacutes dels seus mograveduls Nginx OpenResty proporciona una base forta i potent amb extensions en forma de connectors Lua Kong pot utilitzar tant PostgreSQL per desplegaments a una sola regioacute com Cassandra per configuracions multiregionals Als nostres desenvolupadors els ha agradat lrsquoalt rendiment de Kong el seu enfocament de ldquoles API primerrdquo (que permet lrsquoautomatitzacioacute de la seva configuracioacute) i la seva facilitat per desplegar-lo com a contenidor LrsquoKONG API GATEWAY a diferegravencia de les API Gateway massa ambicioses no teacute tantes caracteriacutestiques perograve igualment compta amb les meacutes bagravesiques com el control del tragravensit la seguretat lrsquoinici de sessioacute el monitoratge i lrsquoautenticacioacute Tenim ganes drsquoavaluar Kong en una configuracioacute en sidecar en un futur progravexim

KOPS eacutes una liacutenia drsquoordres per crear i gestionar cluacutesters Kubernetes de produccioacute drsquoalta disponibilitat Inicialment es va crear per AWS perograve ja compta amb

suport experimental per meacutes proveiumldors Permet tenir-ho tot configurat i en marxa molt ragravepid i tot i que encara srsquohan de desenvolupar del tot algunes caracteriacutestiques (com ara actualitzacions contiacutenues) ens ha impressionat molt la seva comunitat

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines (Rendertron)

LIGHTHOUSE eacutes una eina escrita per Google per avaluar la fidelitat drsquoaplicacions web als estagravendards de les Aplicacions Web Progressives (PWA) La versioacute 20 de Lighthouse drsquoaquest any incorpora a la seva seleccioacute drsquoeines bagravesiques les funcions de megravetriques de rendiment i control drsquoaccessibilitat Aquesta funcionalitat afegida srsquoha incorporat a les eines estagravendard per desenvolupadors de Chrome sota la pestanya ldquoauditrdquo Aixiacute Lighthouse 20 eacutes un altre beneficiari del mode headless de Chrome Aixograve proporciona una alternativa a Pa11y i altres eines similars per dur a terme controls drsquoaccessibilitat a canals drsquointegracioacute contiacutenua ja que lrsquoeina es pot executar des drsquouna liacutenia drsquoordres o independentment com a aplicacioacute Nodejs

Un problema recurrent per les aplicacions web amb molt contingut de JavaScript eacutes com fer que els motors de cerca puguin trobar les porcions dinagravemiques drsquoaquestes pagravegines Histogravericament els desenvolupadors han utilitzat tota una segraverie de trucs entre els quals hi ha la renderitzacioacute al servidor amb React serveis externs o prerenderitzar el contingut El mode headless de Google Chrome incorpora ara un nou truc a la llista RENDERTRON una solucioacute de renderitzacioacute de headless Chrome Rendertron ajusta una instagravencia de headless Chrome a un contenidor Docker i ho deixa tot llest per desplegar-ho com a servidor HTTP independent Aixiacute es pot redirigir els bots que no renderitzen JavaScript a aquest servidor per quegrave el renderitzin Tot i que els desenvolupadors sempre poden desplegar els seu propi proxy de headless Chrome i tot el relacionat Rendertron simplifica el proceacutes de configuracioacute i desplegament i proporciona exemples de codi de programari intermediari per detectar i dirigir bots

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 21: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 21

SONOBUOY eacutes una eina de diagnogravestic per dur a terme proves completes de conformitat a qualsevol cluacutester Kubernetes de manera no-destructiva Lrsquoequip de Heptio fundat per dos dels creadors del projecte Kubernetes ha creat aquesta eina per assegurar que la gran varietat de distribucions i configuracions de Kubernetes srsquoajusten a les millors pragravectiques i segueixen els estagravendards de codi obert per lrsquointeroperabilitat de cluacutesters Estem experimentant executant-lo com a part del nostre canal de compilacioacute drsquoinfraestructura com a codi i monitorant contiacutenuament les nostres instalmiddotlacions de Kubernetes per validar el comportament i la salut de tot el cluacutester

Si srsquoestagrave implementant serveis de Java utilitzant lrsquoentorn de treball Spring eacutes possible que es vulgui tenir en compte SPRING CLOUD CONTRACT per les proves de contracte basades en consumidors Lrsquoecosistema actual drsquoaquesta eina suporta la verificacioacute de crides de clients i la implementacioacute del servidor sobre el contracte En comparacioacute amb Pact una segraverie drsquoeines de proves de contractes basats en consumidors de codi obert li manca fer drsquointermediari dels contractes i el suport per meacutes llenguatges de programacioacute Tot i aixograve srsquointegra beacute amb lrsquoecosistema Spring per a la redireccioacute de missatges amb Spring Integration

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 22: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 22

A radars anteriors ens ha costat recomanar amb decisioacute ANGULAR perquegrave era essencialment un nou entorn de treball meacutes aviat poc emocionant i que lrsquouacutenic que tenia era que compartia el nom amb AngularJS un entorn que ens agradava molt antigament Amb el temps perograve Angular que ja es eacutes a la versioacute 5 no ha deixat de millorar a la vegada que ha mantingut la compatibilitat amb versions anteriors Diversos dels nostres equips estan utilitzant aplicacions de Angular i de moment els agrada el que veuen En aquest Radar doncs movem Angular al quadrant de Provar per simbolitzar que alguns dels nostres equips creuen que eacutes una opcioacute sogravelida La majoria dels nostres equips perograve segueixen preferint React Vue o Ember abans que Angular

ASSERTJ eacutes una llibreria de Java que proporciona una interfiacutecie fluida per assercions el que facilita expressar intencionalitat al codi de proves AssertJ proporciona missatges drsquoerror llegibles assercions febles i suport

millorat per colmiddotleccions i excepcions Estem veien com alguns equips es passen a AssertJ deixant de banda JUnit en combinacioacute amb Hamcrest

CSS Grid Layout un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes (CSS Grid Layout)

CSS eacutes la opcioacute predilecte per dissenyar pagravegines web tot i que no tenia suport expliacutecit pel disseny Flexbox va ajudar amb dissenys meacutes simples i unidimensionals perograve els desenvolupadors acostumaven a buscar

PRECAUCIOacutePRECAUCIOacute AVALUARAVALUAR PROVARPROVAR ADOPTARADOPTAR

1

79

10 11

12

2

13

14

15

17

18

19

24

20

3

45

6

816

21

22

23

25

5360

73

74

7661

66

5554

62

6364

65

6768

69

7071

72

75

56

57 58

59

28

41

46

4850

32

2627

35

36

37

38

39

40

42

43

44

45

4749

51

52

29

30

31

33

34

77

80

89

96

99

97

78

79

81

82

86

8790

9192

93 9495

98

100

101

102103

104

105

88

8384

85

LLENGUATGES I ENTORNS DE TREBALL

ADOPTAR77 Python 3

PROVAR78 Angular79 AssertJ NOU80 Avro81 CSS Grid Layout NOU82 CSS Modules NOU83 Jest NOU84 Kotlin85 Spring Cloud

AVALUAR86 Android Architecture Components NOU87 ARKit i ARCore NOU88 Atlas i BeeHive NOU89 Caffe90 Clara rules NOU91 CSS a JS NOU92 Digdag NOU93 Druid NOU94 ECharts NOU95 Gobot NOU96 Instana97 Keras98 LeakCanary NOU99 PostCSS100 PyTorch NOU101 single-spa NOU102 Solidity NOU103 TensorFlow Mobile NOU104 Truffle NOU105 Weex NOU

PRECAUCIOacute

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 23: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 23

llibreries i eines per dissenys meacutes complexos CSS GRID LAYOUT eacutes un sistema de disseny bidimensional basat en una quadriacutecula que gragravecies a un joc de comportaments de mides predictibles proporciona mecanismes per dividir lrsquoespai disponible pel disseny en files i columnes La quadriacutecula no requereix cap tipus de llibreria i funciona beacute amb Flexbox i altres elements de CSS No obstant aixograve com que nomeacutes suporta parcialment IE11 ignora als usuaris que encara utilitzen un navegador de Microsoft a Windows 7

La majoria de grans bases de codi de CSS requereixen esquemes de noms complexos per evitar conflictes al namespace global CSS MODULES soluciona aquest problema creant un namespace local per tots els noms de classe en un sol arxiu CSS Aquest arxiu srsquoimporta a un mogravedul de JavaScript on les classes CSS es referencien com cadenes Aleshores es canvien els noms per cadenes uacuteniques generades al pipeline de muntatge (Webpack Browserify etc) la qual cosa representa un canvi significatiu de responsabilitats Abans era una persona la que havia de gestionar tots els noms per evitar conflictes ara aquesta responsabilitat eacutes cosa de les eines de muntatge Un petit inconvenient que hem vist en els models CSS eacutes que les proves no es troben generalment a nivell local i per tant no poden referenciar classes pel nom que srsquoha definit a lrsquoarxiu CSS Nosaltres recomanem utilitzar identificadors o atributs de dades

Jest proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi (Jest)

Els nostres equips estan encantats amb els resultats drsquoutilitzar JEST per a proves drsquointerfiacutecie Proporciona una experiegravencia ldquoconfiguracioacute zerordquo i de fagravebrica compte amb funcions com simulacioacute drsquoobjectes i cobertura de codi Aquest entorn de proves es pot aplicar no nomeacutes a aplicacions React sinoacute tambeacute a altres entorns de JavaScript Una de les caracteriacutestiques meacutes preuades de Jest soacuten les proves per captures Aquestes proves serien una molt bona incorporacioacute a la capa superior de la piragravemide de proves perograve cal recordar que les proves unitagraveries segueixen sent la millor opcioacute

Lrsquoanunci del suport per Android del llenguatge de ragravepid creixement KOTLIN li ha donat una empenta important i eacutes per aixograve que estem seguint el progreacutes de KotlinNative la habilitat de compilar natiu Alguns dels beneficis drsquoaquest llenguatge soacuten ldquonull safetyrdquo classes de dades creacioacute de DSLs i la llibreria de desenvolupament drsquoAndroid Anko Tot i els inconvenients com soacuten una compilacioacute inicial lenta i dependegravencia a IntelliJ per suportar IDEs de primera classe recomanem provar aquest llenguatge modern fresc i conciacutes

SPRING CLOUD segueix evolucionant i incorporant noves funcionalitats interessants El suport per connectar-se a Kafka Streams del projecte spring-cloud-streams per exemple fa que sigui relativament fagravecil crear aplicacions basades en missatges amb connectors per Kafka i RabbitMQ Als nostres equips que lrsquoestan utilitzant els agrada la simplicitat que aporta a lrsquohora drsquoutilitzar infraestructures que sovint poden ser complexes com ZooKeeper i el seu suport per problemes comuns que cal tenir en compte quan es creen sistemes distribuiumlts com ara traccedilar amb spring-cloud-sleuth Cal anar amb compte perograve lrsquoestem utilitzant satisfactograveriament a diversos projectes

Histogravericament a la documentacioacute sobre Android de Google hi faltaven exemples drsquoarquitectura i estructura Aixograve canvia perograve amb el llanccedilament de ANDROID ARCHITECTURE COMPONENTS una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura Solucionen problemes recurrents del desenvolupament Android gestioacute de cicles de vida paginacioacute bases de dades SQLite i persistegravencia de dades sobre canvis de configuracioacute No cal utilitzar totes les llibreries es poden seleccionar les que meacutes es necessiten per integrar-les a projectes existents

Hem vist una gran quantitat drsquoactivitat relacionada amb la realitat augmentada gragravecies a ARKIT I ARCORE les llibreries natives de RA de Apple i Google respectivament Aquestes llibreries estan acostant les tecnologies de RA a la majoria de consumidors perograve no obstant aixograve les empreses tenen un gran repte per davant ja que els hi han de trobar usos que aportin solucions que realment millorin lrsquoexperiegravencia de lrsquousuari

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 24: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 24

En un moment on hi ha cada vegada menys usuaris que descarreguin noves aplicacions aplicar una estrategravegia multiaplicacioacute eacutes molt controvertit En lloc drsquointroduir una nova aplicacioacute i patir pel nombre de descagraverregues els equips muacuteltiples han de proporcionar noves funcionalitats a traveacutes drsquouna aplicacioacute que ja utilitzi molta gent la qual cosa implica un repte arquitectural meacutes gran ATLAS I BEEHIVE soacuten solucions modulars per aplicacions Android i iOS respectivament que fan possible que equips muacuteltiples que treballen en mograveduls fiacutesicament aiumlllats puguin ajuntar i carregar dinagravemicament aquests mograveduls des drsquouna aplicacioacute principal Curiosament les dues solucions soacuten projectes de codi obert de Alibaba i la raoacute drsquoaixograve eacutes que Alibaba tambeacute va tenir problemes de reduccioacute del nombre de descagraverregues i els mateixos reptes arquitecturals

La nostra regla drsquoor per a seleccionar un motor de regles eacutes no cal cap motor de regles Hem vist a massa gent lligar-se a un motor de regles difiacutecil de provar per raons incorrectes quan escriure codi personalitzat hagueacutes sigut una opcioacute molt millor Un cop dit aixograve perograve hem tingut bones experiegravencies amb CLARA RULES per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen En lloc de perseguir la idea que els empresaris haurien de manipular directament les regles fomenta la colmiddotlaboracioacute entre els experts del negoci i els desenvolupadors

CSS A JS eacutes una tegravecnica que permet escriure fulls drsquoestil CSS en el llenguatge de programacioacute JavaScript Aixograve fomenta un patroacute comuacute drsquoescriptura amb el component JavaScript al qual aplica compartint les quumlestions de presentacioacute i logravegica Els nous participants drsquoaquest espai entre els quals hi ha JSS emotion i styled-components depenen de les eines per traduir el codi CSS escrit en JS per separar els fulls drsquoestil i fer-los adequats pels navegadors Aquest eacutes el segon intent drsquoescriure CSS en JS i a diferegravencia del primer la tegravecnica no depegraven dels estils inline Aixograve vol dir doncs que teacute el benefici de suportar totes les caracteriacutestiques de CSS compartir CSS gragravecies a lrsquoecosistema npm i utilitzar els components a diferents plataformes Els nostres equips han comprovat que styled-components funciona beacute amb entorns de treball basats en components com ara React i va beacute per fer proves unitagraveries de CSS amb jest-styled-components

Estem davant drsquoun nou espai que canvia molt ragravepidament Lrsquoenfocament requereix alguns esforccedilos per depurar manualment els noms de classes generats al navegador i pot no ser adequat per projectes on lrsquoarquitectura de la interfiacutecie no suporti la reutilitzacioacute de components i requereixi un estil global

DIGDAG eacutes una eina per generar executar planificar i monitorar canals complexos de dades al nuacutevol Permet definir els canals en YAML utilitzant la gran quantitat drsquooperadors disponibles o creant-ne de nous amb la seva API Digdag teacute la majoria de les caracteriacutestiques estagravendard de les solucions de canals de dades com la gestioacute de dependegravencies fluxos de treball modulars per fomentar la reutilitzacioacute seguretat en la gestioacute de secrets i suport multillenguatge La caracteriacutestica que meacutes ens crida perograve eacutes el suport per lrsquoestrategravegia multinuacutevol que permet moure i unir dades entre AWS RedShift S3 i BigQuery de Google Nosaltres creiem que a mesura que meacutes proveiumldors de serveis al nuacutevol ofereixin millors solucions de processament de dades Digdag (i altres eines similars) seran molt uacutetils per seleccionar la millor opcioacute per cada tasca

DRUID eacutes un conjunt de connexions JDBC amb moltes caracteriacutestiques de monitoratge Teacute un analitzador SQL incorporat que monitoritza la semagraventica de les instruccions de SQL que srsquoexecuten a la base de dades Les injeccions o instruccions de SQL sospitoses es bloquegen i registren directament des de la capa JDBC i a meacutes es poden combinar les consultes segons la seva semagraventica Aquest projecte de codi obert eacutes responsabilitat de Alibaba i reflecteix el que ha apregraves operant els seus propis sistemes de bases de dades

Android Architecture Components una segraverie de llibreries que ajuden els desenvolupadors a crear aplicacions amb millor arquitectura (Android Architecture Components)

ECHARTS eacutes una llibreria de lleugera de creacioacute de gragravefics que suporta diferents tipus de gragravefics i drsquointeraccions Com que ECharts es basa totalment en lrsquoAPI Canvas teacute un rendiment increiumlble fins i tot amb punts de dades de meacutes de 100k i tambeacute srsquoha optimitzat per lrsquouacutes mogravebil Conjuntament amb el seu projecte germagrave ECharts-X teacute suport per dibuixar en 3D Echarts eacutes un projecte de codi obert de Baidu

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 25: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 25

Lrsquohabilitat de compilar el llenguatge de programacioacute Go a natiu ha generat interegraves entre els desenvolupadors per utilitzar-lo a sistemes integrats GOBOT eacutes un entorn de treball pensat per la robogravetica la informagravetica fiacutesica i el internet de les coses escrit en el llenguatge de programacioacute Go i que suporta una segraverie de plataformes Nosaltres hem utilitzat lrsquoentorn de treball per projectes de robogravetica experimental en els quals no necessitagravevem una resposta en temps real i hem creat controladors de programari de codi obert amb Gobot Les APIs HTTP de Gobot possibiliten una integracioacute simple del maquinari amb dispositius mogravebils per crear aplicacions meacutes riques

Els nostres equips de desenvolupadors per mogravebil estan entusiasmats amb LEAKCANARY una eina dissenyada per detectar aquelles pegraverdues de memograveria tan molestes a Android i Java Eacutes fagravecil de connectar i proporciona notificacions que permeten trobar la causa de la pegraverdua Incorporar aquesta eina pot estalviar la gran quantitat drsquohores que implica buscar els errors de memograveria a muacuteltiples dispositius

PYTORCH eacutes la transcripcioacute completa de lrsquoentorn drsquoaprenentatge automagravetic Torch de Lua a Python Tot i que eacutes bastant nou i immadur en comparacioacute amb Tensorflow els programadors consideren que eacutes molt meacutes fagravecil drsquoutilitzar Gragravecies a la seva orientacioacute a objectes i la seva implementacioacute nativa de Python els models es poden expressar de manera meacutes concisa i clara i es poden depurar mentre srsquoestan executant Tot i que recentment han aparegut molts drsquoaquests entorns de treball Pytorch disposa del recolzament de Facebook i drsquouna gran varietat de socis com ara NVIDIA la qual cosa hauria drsquoassegurar el suport per arquitectures CUDA Els nostres equips creuen que PyTorch eacutes uacutetil per experimentar i desenvolupar models perograve encara recorren a TensorFlow per aplicacions a gran escala pel seu rendiment

SINGLE-SPA eacutes un ldquoentorn de treball drsquoentorns de treballrdquo de JavaScript que ens permet crear micrinterfiacutecies utilitzant diferents entorns de treball que coexisteixen a una sola aplicacioacute En termes generals no recomanem utilitzar meacutes drsquoun entorn de treball per una sola aplicacioacute perograve hi ha certs casos en quegrave eacutes inevitable haver-ho de fer single-spa per exemple pot ser bastant uacutetil quan es treballa amb una aplicacioacute heretada a la qual se li vol posar una nova caracteriacutestica ja sigui amb una versioacute actual de lrsquoentorn de treball de lrsquoaplicacioacute o utilitzant-ne un de totalment diferent Tenint en compte la curta vida de molts entorns de treball de

JavaScript creiem que seria necessari que existiacutes una solucioacute que permeteacutes futurs canvis i experimentacioacute en lrsquoentorn de treball sense que aixograve afecteacutes tota lrsquoaplicacioacute En aquest aspecte sembla que single-spa pot ser un bon comenccedilament

Hem tingut bones experiegravencies amb Clara rules per aquells casos en quegrave un motor de regles siacute que teacute sentit Ens agrada que utilitzi codi Clojure simple per expressar i avaluar les regles la qual cosa vol dir que es poden incloure en el proceacutes de refaccioacute de proves i de control drsquoorigen (Clara rules)

Programar per contractes intelmiddotligents requereix un llenguatge meacutes expressiu que els sistemes de sequumlencies per transaccions SOLIDITY eacutes el llenguatge meacutes popular entre els dissenyats per a contractes intelmiddotligents Es tracta drsquoun llenguatge orientat a contractes i de tipatge estagravetic que teacute una sintaxi similar a la de JavaScript Proporciona abstraccions per escriure logravegica empresarial autoexecutable a contractes intelmiddotligents La seva cadena drsquoeines no para de creacuteixer i actualment Solidity eacutes lrsquoeleccioacute principal a la plataforma Ethereum Tenint en compte la naturalesa immutable dels contractes intelmiddotligents desplegats no cal dir que eacutes de vital importagravencia fer proves i auditar rigorosament les dependegravencies

TENSORFLOW MOBILE fa possible que els desenvolupadors puguin incorporar una gran quantitat de tegravecniques drsquointelmiddotligegravencia artificia i comprensioacute a les seves aplicacions de iOS o Android la qual cosa eacutes especialment uacutetil si es teacute en compte la diversitat de dades de sensors disponible als telegravefons mogravebils Permet carregar models de TensorFlow preentrenats a una aplicacioacute mogravebil i aplicar-los a certs punts com ara fotogrames de viacutedeos en directe text o veu Curiosament els telegravefons mogravebils soacuten una fantagravestica plataforma per implementar aquests models computacionals Els models de TensorFlow srsquoexporten i es carreguen com a arxius protobuf els quals poden suposar algun problema pels implementadors El format binari de protobuf pot dificultar lrsquoexamen de models i requereix que srsquoenllaci la versioacute correcte de la llibreria protobuf a lrsquoaplicacioacute mogravebil Lrsquoexecucioacute local en canvi ofereix una alternativa molt atractiva a TensorFlow Serving sense la cagraverrega de comunicacions que suposa executar-ho remotament

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 26: TECHNOLOGY RADAR VOL

copy ThoughtWorks Inc Tots Els Drets Reservats TECHNOLOGY RADAR | 26

TRUFFLE eacutes un entorn de desenvolupament que porta una experiegravencia de desenvolupament web moderna a la plataforma Ethereum Srsquoencarrega de la compilacioacute de contractes intelmiddotligents de lrsquoenllaccedilament i desplegament de llibreries i a meacutes dels artefactes a diferents xarxes de cadenes de blocs Una de les raons per les quals ens encanta Truffle eacutes que fomenta que la gent escrigui proves pels seus contractes intelmiddotligents Com que els contractes intelmiddotligents srsquoassocien molt sovint amb diners cal prendrersquos el proceacutes de proves molt seriosament Gragravecies al seu entorn de proves incorporat i a la seva integracioacute amb TestRPC Truffle possibilita que srsquoescrigui el contracte seguint el desenvolupament basat en proves (TDD) Nosaltres creiem que hi hauragrave meacutes tecnologies similars a Truffle que promoguin la integracioacute contiacutenua a lrsquoagraverea de les cadenes de blocs

WEEX eacutes un entorn de treball per crear aplicacions mogravebils multiplataforma utilitzant la sintaxi del component Vuejs Pels que prefereixen la simplicitat de Vuejs Weex no nomeacutes eacutes una opcioacute viable per aplicacions mogravebils natives sinoacute que tambeacute funciona molt beacute amb aplicacions meacutes complicades Hem vist algunes aplicacions meacutes aviat complicades desenvolupades sobre aquest entorn de treball que funcionen molt beacute com ara TMall i Taobao dos de les aplicacions mogravebils meacutes populars a la Xina Weex ha estat desenvolupat per Alibaba i ja fa part del projecte Apache incubator

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 27: TECHNOLOGY RADAR VOL

Sigues el primer a saber quan surt el RadarTecnologravegic i segueix actualitzat amb seminaris en

liacutenia i contingut exclusius

SUBSCRIURErsquoS ARA

thghtworksSub-CA

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom

Page 28: TECHNOLOGY RADAR VOL

ThoughtWorks eacutes una consultoria i comunitat tecnologravegica formada perpersones apassionades i mogudes per objectius Ajudem els nostres clients aposar la tecnologia al centre del seu negoci i junts creem els programes que

meacutes els importen Ens dediquem al canvi social positiu la nostra missioacute eacutescrear una humanitat millor a traveacutes de programes i ens associem amb moltes

organitzacions que comparteixen els mateixos objectius

Fundada fa meacutes de 20 anys ThoughtWorks ha crescut fins a convertir-se en unaempresa formada per meacutes de 4000 persones i amb una divisioacute de productes

encarregada de crear eines pioneres pels equips de programacioacute ThoughtWorksteacute 40 oficines repartides en 14 paiumlsos Alemanya Austragravelia Brasil Equador

Espanya Estats Units Iacutendia Itagravelia Regne Unit Singapur SudagravefricaTurquia Xile i Xina

thoughtworkscom