TECHNOLOGY RADAR VOL.16 - Le nostre idee sulla tecnologia e sulle tendenze che daranno forma al futuro

Pagina creata da Pasquale Sacco
 
CONTINUA A LEGGERE
TECHNOLOGY
RADAR VOL.16
 Le nostre idee sulla tecnologia
     e sulle tendenze che
    daranno forma al futuro

         thoughtworks.com/radar
             #TWTechRadar
HANNO CONTRIBUITO
    Il Technology Radar viene redatto dal
    ThoughtWorks Technology Advisory Board, che include:

Rebecca Parsons (CTO) | Martin Fowler (Chief Scientist) | Badri Janakiraman | Bharani Subramaniam | Camilla Crispim
               Erik Doernenburg | Evan Bottcher | Fausto de la Torre | Hao Xu | Ian Cartwright
                      James Lewis | Jonny LeRoy | Marco Valtas | Mike Mason | Neal Ford
                      Rachel Laycock | Scott Shaw | Srihari Srinivasan | Zhamak Dehghani
CHE NOVITÀ CI SONO?
Temi alla ribalta in questa edizione:

INTERFACCE UTENTE COLLOQUIALI                                Capacità che alcuni anni fa sarebbero state molto
ED ELABORAZIONE DEL                                          costose da sviluppare, ora appaiono come piattaforme
LINGUAGGIO NATURALE                                          open source o SaaS. Sembra che le “guerre del cloud”
                                                             si siano spostate dalla competizione sullo storage e la
      guarda il video (thght.works/ConUI)
                                                             computazione, alle capacità cognitive, come si evince
La conversazione, una nuova maniera di interagire con        dalla volontà di aprire il sorgente di strumenti che solo
le applicazioni, ha sconvolto l’ecosistema con strumenti     poco tempo fa erano considerati fattori differenzianti,
come Siri, Cortana e Allo, e poi si è spostata all’interno   come Kubernetes e Mesos.
delle case con dispositivi come Amazon Echo e Google
Home.                                                        Tutti i big del settore competono in questa arena,
                                                             insieme a interessanti operatori di nicchia che vale
Costruire interfacce utente colloquiali e in linguaggio      la pena di considerare. Anche se abbiamo ancora
naturale presenta nuove sfide, ma ha anche ovvi              delle riserve sulle implicazioni etiche e di privacy di
benefici. Il team che ha progettato Echo ha                  questi servizi, vediamo grandi promesse nell’utilizzo
volutamente omesso lo schermo, costringendosi così a         di questi strumenti in maniere innovative. I nostri
ripensare molte interazioni uomo-macchina.                   clienti stanno già investigando quali nuovi orizzonti
                                                             si possano dischiudere, grazie alla combinazione di
Il trend colloquiale non è limitato solo alla voce; da       servizi di cognizione che sono ormai commodity, con la
quando le app di messaging sono arrivate a dominare          conoscenza e la comprensione della loro propria area
sia sui telefoni che sul lavoro, vediamo che alle            di business.
conversazioni con gli esseri umani si affiancano i
chatbot intelligenti. Quando queste piattaforme
miglioreranno, impareranno a capire il contesto e            L’ESPERIENZA DELLO
l’intento delle conversazioni, rendendo le interazioni più   SVILUPPATORE COME NUOVO
realistiche e più convincenti.                               FATTORE DIFFERENZIANTE
                                                                 guarda il video (thght.works/DevExp)
L’esplosione di interesse nel mercato e nei media in
generale porta una corrispondente crescita                   La progettazione dell’esperienza utente è stata per anni
dell’interesse degli sviluppatori per questa nuova           un fattore chiave di differenziazione per le aziende di
maniera di interagire con le macchine.                       prodotti tecnologici. Oggi sta avvenendo qualche cosa
                                                             di simile, con al centro questa volta gli sviluppatori. La
                                                             rapida crescita della gamma di strumenti a disposizione,
INTELLIGENCE AS A SERVICE                                    assieme alla difficoltà di trovare talento ingegneristico,
                                                             portano ad una estrema attenzione all’esperienza degli
      guarda il video (thght.works/IntSer)
                                                             sviluppatori stessi.
Una nuova famiglia di piattaforme, che chiamiamo
“intelligence as a service” è apparsa recentemente sulla     Sempre più le organizzazioni valutano le offerte cloud
scena. Queste piattaforme comprendono una grande             basandosi su quanto queste riducano l’attrito con
varietà di servizi sorprendentemente potenti,                la funzione ingegneristica, trattano le API come un
dall’elaborazione della voce alla comprensione del           prodotto, creano nuovi team dedicati a migliorare la
linguaggio naturale, al riconoscimento di immagini, e al     produttività ingegneristica. In ThoughtWorks siamo
deep learning.

© ThoughtWorks, Inc. All Rights Reserved.                                                        TECHNOLOGY RADAR | 3
sempre stati ossessionati dal promuovere pratiche             Una definizione che ci piace è che le piattaforme
ingegneristiche efficienti ed abbiamo spinto per l’utilizzo   dovrebbero esporre API pronte all’uso in modalità
di strumenti e piattaforme che possano rendere la vita        self-service, facili da configurare e fornite di ambienti
dello sviluppatore più facile. Pertanto ci fa molto piacere   dedicati ai team di sviluppo; concetti questi in linea con
vedere che l’industria nel suo complesso stia iniziando       un’altro tema emergente, quello dell’esperienza
ad intraprendere questa strada.                               sviluppatore come nuovo fattore differenziante. Ci
                                                              aspettiamo di vedere ulteriori raffinamenti sia nella
Tra le tecniche chiave ci piace citare: trattare              definizione che nelle capacità offerte dalle piattaforme
l’infrastruttura interna come un prodotto che deve            nel prossimo futuro.
essere in grado di competere per efficacia con le offerte
di mercato, focalizzarsi sul self-service, capire
l’ergonomia per lo sviluppatore delle API che si              PYTHON OVUNQUE
mettono a disposizione, confinare le applicazioni legacy          guarda il video (thght.works/PerPyt)
“in una scatola”, ed impegnarsi in una continua ricerca
empatica per migliorare l’esperienza degli sviluppatori       Python è un linguaggio che sempre più spesso appare
che utilizzano gli strumenti loro offerti.                    in posti interessanti. La sua facilità d’uso e le solide
                                                              basi che fornisce al calcolo matematico e scientifico
                                                              hanno storicamente fatto di questo linguaggio uno dei
L’ASCESA DELLE PIATTAFORME                                    più adottati nelle comunità accademiche e scientifiche.
      guarda il video (thght.works/RiseOTP)                   La recente diffusione di applicazioni che utilizzano
                                                              Intelligenza Artificiale, unitamente alla
I temi del Radar emergono da osservazioni e                   maturità di Python 3, hanno contribuito a far
conversazioni svolte durante il processo di selezione.        guadagnare al linguaggio nuovi utilizzatori.
Recentemente abbiamo notato un numero sempre
maggiore di nuove entrate nel quadrante delle                 Questa edizione del Radar riporta alcune librerie
Piattaforme. Pensiamo che ciò sia indicativo di una           Python che hanno aiutato a far crescere l’ecosistema,
tendenza più ampia nell’ecosistema dello sviluppo             fra cui Scikitlearn nel dominio del machine learning,
software.                                                     TensorFlow, Keras ed Airflow per la costruzione di grafi
                                                              di flussi dati intelligenti e spaCy che implementa logiche
Famose aziende della Silicon Valley hanno mostrato            di processo del linguaggio naturale, da utilizzare nella
come la costruzione di piattaforme facili da utilizzare       costruzione di API per la gestione di interazioni
possa portare notevoli benefici. Parte del loro successo      colloquiali. Vediamo sempre più spesso Python
deriva dalla capacità di trovare un bilanciamento             avvicinare, all’interno delle organizzazioni, gli scienziati e
ottimale fra incapsulamento e funzionalità offerte.           gli ingegneri, riducendo i reciproci pregiudizi nei
Sempre più il pensare a livello di “piattaforma” trova        confronti degli strumenti favoriti dai due gruppi.
spazio all’interno dell’ecosistema, a partire da
funzionalità avanzate messe in luce nel Radar quali il        Approcci architetturali quali microservizi e container
linguaggio naturale, fino alle piattaforme infrastrutturali   hanno reso più facile l’esecuzione di codice Python in
come Amazon.                                                  ambienti di produzione. Gli ingegneri ora possono
                                                              facilmente distribuire ed integrare codice Python
Le aziende stanno iniziando a pensare in termini di           specializzato, creato dagli scienziati, utilizzando API
piattaforma quando espongono le proprie API, ormai            agnostiche dal punto di vista sia del linguaggio che della
ispirate a veri e propri prodotti. I team di sviluppo         tecnologia sottostante. Questa fluidità rappresenta un
pensano in termini di piattaforma da integrare ed             gran passo in avanti verso la creazione di un
esperienza sviluppatore da migliorare. Sembra che             ecosistema coerente composto da ingegneri e
l’industria stia finalmente trovando una ragionevole          ricercatori, in contrasto con le pratiche ancora molto
combinazione di pacchettizzazione, facilità d’uso ed          presenti nell’industria, che vedono spesso la traduzione
utilità.                                                      da linguaggi specializzati come R in altri linguaggi per gli
                                                              ambienti di produzione.

© ThoughtWorks, Inc. All Rights Reserved.                                                           TECHNOLOGY RADAR | 4
A PROPOSITO DEL RADAR
           I ThoughtWorkers sono appassionati di tecnologia. La                             Il Radar cattura l’esito delle discussioni del Technology
           costruiamo, facciamo ricerca su di essa, la testiamo, ne                         Advisory Board in un formato che fornisce valore a un
           apriamo il sorgente, ne scriviamo e cerchiamo                                    ampio spettro di stakeholder, dagli sviluppatori ai CTO.
           costantemente di migliorarla, per tutti. La nostra                               Il contenuto del Radar ne è un sommario conciso.
           missione è di essere i campioni dell’eccellenza nel
           software e di rivoluzionare l’IT. Creiamo e condividiamo                         Incoraggiamo chiunque a esplorare queste tecnologie
           il ThoughtWorks Technology Radar per supportare                                  per avere maggiori dettagli. Il Radar ha un formato
           questa missione. Il Radar è creato dal ThoughtWorks                              grafico, e raggruppa gli elementi in tecniche, strumenti,
           Technology Advisory Board, un gruppo di leader                                   piattaforme e linguaggi & framework. Quando elementi
           tecnologici senior in ThoughtWorks. I leader si                                  del Radar potrebbero apparire in più di un quadrante,
           incontrano regolarmente per discutere la strategia                               scegliamo quello che ci sembra più appropriato.
           tecnologica globale per ThoughtWorks e i trend                                   Raggruppiamo ulteriormente questi elementi in
           tecnologici che impattano la nostra industria in modo                            maniera da riflettere la nostra opinione corrente su di
           significativo.                                                                   essi.

                                                                                            Per maggiorni informazioni sul Radar, vedi
                                                                                            thoughtworks.com/radar/faq

                                                                                 IL RADAR A COLPO D’OCCHIO

                                                                                 1    ADOTTARE                           2     PROVARE

                                                                                      Siamo fortemente convinti                Vale la pena di provare a usare
                                                                                      che l’industria dovrebbe                 queste tecnologie. È importante
                                                                                      adottare questi elementi.                portarne in casa la conoscenza.
                                                                                      Noi li usiamo nei nostri                 Vanno testare su progetti
                                                                                      progetti.                                che possono permettersi di
                    1                     2               3         4                                                          accettarne il rischio.

ADOTTARE        ADOTTARE              PROVARE          VALUTARE   EVITARE
                                                                                 3    VALUTARE                           4     EVITARE
                                                                                      Vale la pena di esplorare,               Procedete a vostro
                                                                                      con l’obiettivo di capire                rischio.
                                                                                      che impatto può avere
                                                                                      sulla vostra azienda.
                                                                            96       108

                                                                                     NUOVI O CAMBIATI                   Gli elementi che sono nuovi o che hanno
                                                                                                                        avuto modifiche significative dall’ulttimo
                                                                                                                        Radar sono rappresentati da triangoli,
                                                                                     NON MODIFICATI
                                                                                                                        mentre gli elementi che non si sono mossi
                                                                                                                        sono rappresentati come cerchi.

                                                                                      Il nostro Radar guarda avanti. Per fare spazio per i nuovi elementi, lasciamo
                                                                                      sbiadire gli elementi che non sono cambiati di recente. Questo non è
                                                                                      perché non siano validi, ma per limiti di spazio.

           © ThoughtWorks, Inc. All Rights Reserved.                                                                                   TECHNOLOGY RADAR | 5
IL RADAR
TECNICHE
                                                                                                                                                                    23
ADOTTARE
1.  Pipelines as code
                                                                                                                                    22
PROVARE
2.  API come prodotto                                                                                                                                                         17
3.  Disaccoppiare i segreti dal codice NUOVO
4.  Conservare i dati sensibili nella UE
5.  Legacy in una scatola NUOVO                                                                        21
6.  Lightweight Architecture Decision Records                                                                                                                  16
7.  Progressive Web Applications NUOVO
8.  Prototipare con InVision e Sketch NUOVO                                                                                                 15
9.  Architetture serverless
                                                                                                                      14
VALUTARE                                                                              20
                                                                                                                                                     7
10. Client-directed query                                                                         13
11. Container security scanning                                                                                                                                          8
12. API colloquialmente consapevoli NUOVO
13. Differential privacy
14. Micro frontends                                                                                                                              6
15. Platform engineering product teams NUOVO                                                                                                                                             9
                                                                           19
16. Analisi sociale del codice NUOVO                                                             12
17. Realtà virtuale al di là del codice                                                                                         5

EVITARE
18. Una sola istanza di CI per tutti i team
19. Anemic REST                                                                             11                                  4
20. Big Data envy
21. Teatrino CI NUOVO                                               18
22. Ambienti di test di integrazione a livello aziendale NUOVO
23. Spec-based codegen NUOVO                                                                                                            3
                                                                                      10                                                                                           1

PIATTAFORME                                                                                                                         2

ADOTTARE                                                         EVITARE   VALUTARE                     PROVARE                                                ADOTTARE
24. HSTS
25. Linux Security Modules                                                            32
                                                                            33
PROVARE                                                                          34                                   26
26. Apache Mesos                                                                                                                                              24
                                                                                       35
27. Auth0
28. AWS Device Farm NUOVO
29. AWS Lambda                                                                        36                                                                                           25
30. OpenTracing NUOVO
31. Unity beyond gaming                                                                    37                    27
VALUTARE
32. .NET Core                                                                     38                                                         28
33. Amazon API Gateway
34. api.ai NUOVO                                                                      39
35. Cassandra carefully                                                                                                                                  29                             31
36. Comprensione delle immagini nel cloud NUOVO                                             40                                                                           30
37. DataStax Enterprise Graph NUOVO                                         53
                                                                                                            42
38. Electron                                                                                     41
39. Ethereum
                                                                                                                  43
40. Hyperledger NUOVO
41. IndiaStack
42. Kafka Streams NUOVO                                                                                           44            45
43. Keycloak NUOVO
                                                                                                                                                     47
44. Mesosphere DCOS
45. Mosquitto NUOVO                                                                                                                                       48
46. Nuance Mix                                                                                                                      46                              49
                                                                                                                                                                              50
47. OpenVR                                                                                                                                                                              51
48. PlatformIO NUOVO
49. Tango NUOVO                                                                                                            54
50. Voice platforms NUOVO                                                                                                                                                                52
51. WebVR NUOVO
52. wit.ai

EVITARE                                                             Nuovo o cambiato
53. CMS as a platform
54. Overambitious API gateways                                      Non modificato

© ThoughtWorks, Inc. All Rights Reserved.                                                                                   TECHNOLOGY RADAR | 6
IL RADAR
                                                                                                           STRUMENTI
                                                                                                           ADOTTARE
                                                                                                           55. fastlane
                                                                                                           56. Grafana

                                                                                                           PROVARE
                                                                                                           57. Airflow NUOVO
                   68                                                                                      58. Cake and Fake NUOVO
66         67
                                69                                                                         59. Galen
                                                                                                           60. HashiCorp Vault
                                                                                                           61. Pa11y
                                          70                                                               62. Scikit-learn
                                                                                                           63. Serverless Framework NUOVO
                                                     71                                                    64. Talisman
                      59                                                                                   65. Terraform
           58
57                                                                                                         VALUTARE
                                                          72
                                                                                                           66. Amazon Rekognition NUOVO
                                                                                                           67. Android-x86
                                                                    73                                     68. Bottled Water
                                                                                                           69. Claudia NUOVO
                                                                                                           70. Clojure.spec
                  60            61                                                                         71. InSpec NUOVO
                                                                         74
                                                                                                           72. Molecule NUOVO
                                                                                                           73. Spacemacs NUOVO
                                 62                                                                        74. spaCy NUOVO
                                                                              75                           75. Spinnaker NUOVO
                                                                                                           76. Testinfra NUOVO
                                          63                                          76                   77. Yarn NUOVO
 55
                                                                                                           EVITARE
                                          64
       56                                                                                  77
                                                          65
                                                                                                           LINGUAGGI & FRAMEWORK
      ADOTTARE                                      PROVARE                        VALUTARE      EVITARE   ADOTTARE
                                                                                                           78. Ember.js
                                                                                                           79. Python 3
                        81                           89                                    103             80. ReactiveX
            80                                                                                             81. Redux
78                                                                                    102
                                                88                                                         PROVARE
      79                                                                                                   82. Avro NUOVO
                                                                                                           83. Elixir
                                                                                       101                 84. Enzyme
                                               87
                                                                                                           85. Hangfire NUOVO
                                                                                100                        86. Nightwatch NUOVO
                                                                                                           87. Phoenix
                        85                                                                                 88. Quick and Nimble
                                               86                        99                                89. Vue.js
           83
                                                               98                                          VALUTARE
                                                                                                           90. Angular 2 NUOVO
 82                                                                                                        91. Caffe NUOVO
                                                                                                           92. DeepLearning.scala NUOVO
                           84                                  97
                                                                                                           93. ECMAScript 2017
                                                    96
                                                                                                           94. Instana NUOVO
                                                                                                           95. JuMP
                                                                                                           96. Keras NUOVO
                                     94        95
                                                                                                           97. Knet.jl NUOVO
                           93                                             104                              98. Kotlin NUOVO
                                                                                                           99. Physical Web
                                                                                                           100. PostCSS NUOVO
       91        92                                                                                        101. Spring Cloud NUOVO
                                                                                                           102. Three.js
 90                                                                                                        103. WebRTC
                                                                                      Nuovo o cambiato
                                                                                                           EVITARE
                                                                                      Non modificato       104. AngularJS

            © ThoughtWorks, Inc. All Rights Reserved.                                                                                     TECHNOLOGY RADAR | 7
TECNICHE
TECNICHE
ADOTTARE
                                                                                                                                                    23
1.  Pipelines as code
                                                                                                                          22
PROVARE
2.  API come prodotto                                                                                                                                    17
3.  Disaccoppiare i segreti dal codice NUOVO                                                                                                                                         68
4.  Conservare i dati sensibili nella UE                                                               21                                                          66         67
5.  Legacy in una scatola NUOVO                                                                                                                16
6.  Lightweight Architecture Decision Records                                                                                     15
7.  Progressive Web Applications NUOVO
8.  Prototipare con InVision e Sketch NUOVO                                                                      14
                                                                                      20
9.  Architetture serverless                                                                                                                7                                             59
                                                                                                  13                                                                          58
                                                                                                                                                     8             57
VALUTARE
10. Client-directed query
                                                                                                                                       6                       9
11. Container security scanning                                            19
12. API colloquialmente consapevoli NUOVO                                                        12                   5                                                             60
13. Differential privacy
14. Micro frontends
15. Platform engineering product teams NUOVO                                                11                        4
16. Analisi sociale del codice NUOVO
17. Realtà virtuale al di là del codice                             18
                                                                                                                              3                                     55
                                                                                      10                                                                  1
EVITARE
18. Una sola istanza di CI per tutti i team                                                                                                                               56
                                                                                                                          2
19. Anemic REST
20. Big Data envy                                                EVITARE   VALUTARE                     PROVARE                                ADOTTARE                  ADOTTARE
21. Teatrino CI NUOVO
                                                                                      32
22. Ambienti di test di integrazione a livello aziendale NUOVO              33
23. Spec-based codegen NUOVO                                                     34                              26                                                            80
                                                                                       35                                                      24                  78
                                                                                                                                                                         79
                                                                                      36                                                                  25

                                                                                           37               27
Le aziende hanno largamente adottato le API (Application         prenda le parti del cliente e spinga per un miglioramento
                                                                                   38
Programming Interface) come maniera di esporre                   continuo. Nella      nostra esperienza, l’orientamento
                                                                                                            28          al
funzionalità di business a sviluppatori sia interni che          prodotto è l’ingrediente
                                                                                    39        mancante che fa la differenza31
                                                                                                                                                                              83
                                                                                                               29
                                                                                        40                          30
esterni. Le API promettono di poter sperimentare                 fra la solita
                                                                             53 integrazione enterprise e un business agile,
                                                                                               42                                                                   82
rapidamente nuove idee di business, ricombinando                 costruito su una piattaforma
                                                                                         41
                                                                                                  43
                                                                                                    di API.
insieme funzionalità di base. Ma che cosa differenzia un
                                                                                                             44       45
API da un semplice servizio di enterprise integration? Una       Nei precedenti numeri del Radar abbiamo47     citato
differenza sta nel trattare le API COME PRODOTTO,                strumenti come git-crypt e Blackbox che ci consentono
                                                                                                            48
                                                                                                               49
                                                                                                  46                50
                                                                                                                       51                                                           92
anche nei casi in cui il consumatore di questa API sia           di salvare segreti in maniera sicura all’interno del codice                                              91

                                                                                                                                                                    90
un sistema interno o un collega sviluppatore. I team             sorgente. DISACCOPPIARE I SEGRETI DAL CODICE 52è
                                                                                               54

che realizzano API devono comprendere i bisogni                  il nostro modo di ricordare agli esperti di tecnologia
dei loro clienti, per fare in modo che il prodotto sia           che ci sono altre maniere di memorizzare i segreti. Per
utile e conveniente. I test di usabilità e la ricerca UX         Esempio, HashiCorp vault, i server di CI e gli strumenti
possono portare a un miglior design e a una migliore             di gestione della configurazione forniscono meccanismi
comprensione di come la API viene usata; tutto ciò aiuta         per memorizzare segreti che non sono collegati al
ad arrivare a un modo di pensare orientato al prodotto           codice sorgente di una applicazione. Sono percorribili
per le API. Le API, come in generale i prodotti, devono          entrambi gli approcci e vi raccomandiamo di usarne
essere attivamente manutenute e supportate, e devono             almeno uno nei vostri progetti.
essere facili da usare. Dovrebbero avere un “owner”, che

© ThoughtWorks, Inc. All Rights Reserved.                                                                                         TECHNOLOGY RADAR | 8
I team che realizzano API devono                             2015, sono applicazioni web che sfruttano i vantaggi
                                                             delle ultime tecnologie per combinare il meglio delle
comprendere i bisogni dei loro clienti, per
                                                             applicazioni web e mobile. Usando un insieme di
fare in modo che il prodotto sia utile e                     standard tecnologici aperti, come i service workers, gli
conveniente. I test di usabilità e la ricerca UX             app manifest, e le API di cache e push, possiamo creare
possono portare a un miglior design e a una                  applicazioni che sono indipendenti dalla piattaforma
migliore comprensione di come la API viene                   ed erogano una esperienza utente simile a una app.
                                                             Ciò comporta un’equiparazione delle applicazioni web
usata; tutto ciò aiuta ad arrivare a un modo                 e mobile ed aiuta gli sviluppatori di applicazioni mobili
di pensare orientato al prodotto per le API.                 a raggiungere utenti fuori dal recinto degli app store. Si
— API come prodotto                                          pensino le PWA come dei siti web che sembrano app
                                                             native.
Lavorare con codice legacy, specialmente con grandi
monoliti, è una delle esperienze più insoddisfacenti         L’uso combinato di InVision e Sketch ha cambiato
ed irritanti per gli sviluppatori. Sebbene mettiamo          il modo in cui alcuni team affrontano lo sviluppo
in guardia dall’estendere e mantenere attivamente            di applicazioni web. Sebbene questi siano tool, ciò
monoliti legacy, questi ultimi continuano a                  che in realtà rende questo elemento rilevante è la
rappresentare delle dipendenze nel nostro ambiente,          tecnica di PROTOTIPARE CON INVISION E SKETCH.
e gli sviluppatori spesso sottostimano il costo ed           Creare prototipi ricchi ed interattivi (cliccabili) come
il tempo necessario per sviluppare rallentati da             primo passo nell’implementazione dei comportamenti
queste dipendenze. Per aiutare a ridurre l’attrito gli       applicativi, sia di front end che di back end, permette
sviluppatori hanno adottato immagini di macchine             di velocizzare lo sviluppo e ridurre i ricicli nelle fasi
virtuali, o immagini containerizzate con Docker per          realizzative. L’utilizzo combinato di questi strumenti
creare immagini immutabili di sistemi legacy e delle         permette un buon bilanciamento tra l’elaborazione
loro relative configurazioni. L’idea è di confinare il       anticipata di dettagli visuali e la possibilità di catturare
LEGACY IN UNA SCATOLA affinché gli sviluppatori              feedback utente sull’esperienza interattiva.
possano eseguirlo localmente, rimuovendo il
vincolo della sua ricompilazione, riconfigurazione o         Un approccio basato su ARCHITETTURE SERVERLESS
condivisione di ambienti. In uno scenario ideale, i          sostituisce le macchine virtuali in esecuzione per lunghi
team che detengono un sistema legacy generano,               periodi, con potenza di calcolo effimera, che appare
attraverso le loro pipeline di build, la corrispondente      su richiesta e scompare immediatamente dopo il suo
immagine legacy in una scatola, così gli sviluppatori        utilizzo. L’approccio serverless piace ai nostri team; per
possono eseguire ed orchestrare tali immagini nelle          le nostre esigenze funziona bene e lo consideriamo
loro sandbox in modo più affidabile. Sebbene questo          una valida scelta architetturale. Si noti che l’adozione
approccio abbia ridotto il tempo complessivo impiegato       dell’approccio severless non deve necessariamente
da ogni singolo sviluppatore, ha avuto un successo           essere tutto-o-niente: alcuni dei nostri team hanno
limitato quando i team, che detengono le dipendenze          rilasciato una nuova parte dei loro sistemi usando
a valle, si sono dimostrati riluttanti nel creare immagini   serverless, mantenendo un approccio architetturale
“containerizzate” ad uso di altri.                           tradizionale per le altre parti. Sebbene AWS Lambda
                                                             sia quasi sinonimo di serverless, tutti gli altri maggiori
L’aumento delle PROGRESSIVE WEB APPLICATIONS                 fornitori di cloud propongono offerte simili, e
(PWA) è l’ultimo tentativo di ristabilire il mobile web      raccomandiamo di valutare anche operatori di nicchia
come risposta alla “fatica da app” percepita dagli           come webtask.
utenti. Le PWA, proposte in origine da Google nel

© ThoughtWorks, Inc. All Rights Reserved.                                                          TECHNOLOGY RADAR | 9
Le tecnologie come Amazon Alexa, Google                      team di delivery di rilasciare e gestire i sistemi di propria
                                                             competenza in modalità self-service, con una riduzione
Voice e Siri hanno reso molto più semplice
                                                             sia dei tempi di attesa che della complessità dello
scrivere software per interazione vocale.                    stack. In questo caso l’enfasi è posta sugli strumenti
Tuttavia, uno stile di interazione più                       di supporto e self-service basati su API; i team di
discorsivo (vocale o testuale) può essere                    delivery rimangono responsabili per supportare ciò
ancora difficile da realizzare con molte delle               che rilasciano sulla piattaforma. Le organizzazioni
                                                             interessate a considerare questa opzione devono porre
API esistenti                                                attenzione nel non creare involontariamente un team di
— API colloquialmente consapevoli                            DevOps separato, né semplicemente rinominare come
                                                             “piattaforma” la loro attuale struttura di operations.
Le tecnologie come Amazon Alexa, Google Voice e Siri
hanno reso molto più semplice scrivere software per          L’ANALISI SOCIALE DEL CODICE migliora la nostra
interazione vocale. Tuttavia, uno stile di interazione più   comprensione della qualità del codice, arricchendo
discorsivo (vocale o testuale) può essere ancora difficile   l’analisi strutturale del codice con l’analisi del
da realizzare con molte delle API esistenti, specialmente    comportamento dello sviluppatore. Utilizza dati estratti
quando si desideri uno stile di interazione stateful,        dai sistemi di controllo di versione, come la frequenza
dove la successiva interazione ha bisogno di essere          e l’istante di una modifica, e la persona che la ha
consapevole dell’intero contesto conversazionale. In         eseguita. Si può scegliere di scriversi da soli gli script per
questo stile di interazione ci piacerebbe, per esempio,      analizzare tali dati, oppure utilizzare strumenti come
chiedere i treni da Manchester a Glasgow e poi essere        CodeScene. CodeScene può aiutare ad acquisire
in grado di domandare “A che ora è la prima partenza?”       una miglior comprensione dei sistemi software,
senza dover fornire nuovamente il contesto della             identificando punti critici e sottosistemi complessi e
conversazione. Normalmente questo contesto sarebbe           difficili da manutenere: dall’accoppiamento temporale
presente nella risposta iniziale che abbiamo restituito      fra sottosistemi distribuiti, alla proiezione della legge di
ad un browser, ma nel caso delle interfacce vocali           Conway nella organizzazione. Alla luce delle tendenze
abbiamo bisogno di gestire tale contesto altrove. Le API     tecnologiche come i sistemi distribuiti, i microservizi e
COLLOQUIALMENTE CONSAPEVOLI possono essere                   i team distribuiti, crediamo che la dimensione sociale
un esempio di backend for front-end in cui il front-         del codice rivesta un ruolo vitale per la comprensione
end è una piattaforma voce o chat. Questo tipo di API        olistica della salute dei sistemi.
può trattare le specificità di questo stile di interazione
gestendo lo stato della conversazione, chiamando al          L’idea della realtà virtuale è in giro da più di 50 anni, e
tempo stesso servizi retrostanti per conto del front end     con i successivi progressi nella tecnologia, molte idee
vocale.                                                      sono state reclamizzate ed esplorate. Crediamo di
                                                             aver ormai raggiunto un punto di non ritorno. L’anno
L’adozione del cloud e di pratiche DevOps ha                 scorso sono arrivati sul mercato occhiali VR a prezzi
aumentato la produttività dei team, che ora possono          ragionevolmente accessibili per il consumatore, e le
operare più rapidamente, avendo minori dipendenze            schede grafiche di oggi sono sufficientemente potenti
dai team centralizzati di operations ed infrastrutture.      per creare delle vere esperienze di immersione. Questi
Allo stesso tempo, questi cambiamenti possono                occhiali sono per lo più destinate agli appassionati
rappresentare un problema per quei team che                  di videogiochi, ma siamo convinti che apriranno le
mancano delle competenze per gestire in maniera              porte a molte possibilità per la REALTÀ VIRTUALE AL
end-to-end una applicazione, il suo stack tecnologico        DI LÀ DEI GIOCHI. I team che non hanno esperienza
ed i suoi processi operativi. Alcune organizzazioni          nella realizzazione di videogiochi faranno bene a non
hanno affrontato questo tema creando dei PLATFORM            sottovalutare l’impegno e le conoscenze necessarie per
ENGINEERING PRODUCT TEAMS. Questi team                       creare buoni modelli 3D e texture convincenti.
gestiscono una piattaforma interna, che permette ai

© ThoughtWorks, Inc. All Rights Reserved.                                                         TECHNOLOGY RADAR | 10
L’idea della realtà virtuale è in giro da più                  era necessario mantenere un ambiente completo per
                                                               eseguire i cicli di test prima di rilasciare in produzione.
di 50 anni, e con i successivi progressi nella
                                                               Questi AMBIENTI DI TEST DI INTEGRAZIONE A
tecnologia, molte idee sono state reclamizzate                 LIVELLO AZIENDALE, spesso chiamati System
ed esplorate. Crediamo di aver ormai                           Integration & Testing (SIT) o Staging, oggi sono un
raggiunto un punto di non ritorno.                             collo di bottiglia per la continuous delivery. Questi
— Realtà virtuale al di là dei giochi                          ambienti sono fragili e costosi da mantenere, e spesso
                                                               hanno componenti che richiedono una configurazione
Siamo costretti a consigliare prudenza, un’altra volta,        manuale da parte di un apposito team di gestione
nei confronti della creazione di UNA SOLA ISTANZA              dell’ambiente. Testare nell’ambiente di staging
DI CI per tutti i team. Sebbene in teoria sia una bella        fornisce un feedback lento e inaffidabile, e il lavoro
idea consolidare e centralizzare l’infrastruttura di CI,       di test eseguito in questo ambiente è un duplicato
in pratica non vediamo una maturità sufficiente negli          dei test che possono essere eseguiti sui componenti
strumenti e nei prodotti in quest’ambito per conseguire        isolati. Raccomandiamo che le organizzazioni creino
i risultati desiderati. I team di sviluppo che devono          incrementalmente una percorso indipendente di
usare un’offerta di CI centralizzata hanno regolarmente        delivery in produzione per i componenti più importanti.
notevoli ritardi, che dipendono dal team centrale,             Alcune tecniche utili sono: contract testing, decoupling
per eseguire attività minori di configurazione, o per          deployment from release, focus on mean time to
risolvere problemi nell’infrastruttura condivisa e nel         recovery e testing in production.
tooling. In questa fase, continuiamo a raccomandare
alle organizzazioni di limitare gli investimenti in            Sfortunatamente, molti sviluppatori si
centralizzazione alla sola definizione di pattern, linee       limitano ad installare un server di CI
guida e supporto, perché i team di sviluppo possano
                                                               assumendo erroneamente di “fare CI”
gestirsi da soli la propria infrastruttura di CI.
                                                               quando, in realtà, non ne ottengono alcun
Siamo da molto tempo sostenitori della continuous              beneficio. Un tale “Teatrino CI” potrà anche
integration (CI), e siamo stati pionieri nella realizzazione   far contento qualcuno, ma fallirebbe
di server di CI per eseguire build dei progetti                qualsiasi test di certificazione CI credibile.
automaticamente dopo un commit. Usati bene, questi
                                                               — Teatrino CI
programmi monitorano il ramo principale del progetto,
sul quale gli sviluppatori contribuiscono codice
quotidianamente. Il server di CI compila il progetto ed        Ai tempi in cui SOAP dominava l’industria del software
esegue test esaustivi per assicurare che l’intero sistema      enterprise, la pratica di generare codice lato client dalle
software sia sempre integrato in uno stato rilasciabile,       specifiche WSDL era accettata e perfino incoraggiata.
soddisfando perciò il principio di continuous delivery.        Sfortunatamente, il codice risultante era spesso
Sfortunatamente, molti sviluppatori si limitano ad             complesso, non testabile, difficile da modificare e poco
installare un server di CI assumendo erroneamente              portabile fra differenti piattaforme. Con l’avvento di
di “fare CI” quando, in realtà, non ne ottengono alcun         REST, troviamo che sia meglio far evolvere i client con il
beneficio. Cause di fallimento tipiche includono:              pattern tolerant reader, per leggere ed elaborare solo
eseguire CI su un ramo principale condiviso ma con             i campi necessari. Recentemente abbiamo osservato
rari commit, per cui l’integrazione non è veramente            un ritorno allarmante alle vecchie abitudini, con
continua; eseguire il build con una copertura scadente         sviluppatori che generano codice dalle specifiche di API
dei test, lasciando il build rosso per lunghi periodi;         scritte con Swagger o RAML, una pratica che chiamiamo
oppure eseguire CI su feature branch, che si traduce           SPEC-BASED CODEGEN. Sebbene questi strumenti
in continuous isolation. Un tale “TEATRINO CI” potrà           siano molto utili per guidare la progettazione delle API e
anche far contento qualcuno, ma fallirebbe qualsiasi           per estrarre documentazione, mettiamo in guardia dalla
test di certificazione CI credibile.                           facile scorciatoia di generare codice client da queste
                                                               specifiche. I rischi sono che tale codice sia difficile da
                                                               testare e manutenere.
Quando i rilasci mensili o trimestrali che coinvolgevano
l’intera azienda erano considerati una best practice,

© ThoughtWorks, Inc. All Rights Reserved.                                                         TECHNOLOGY RADAR | 11
68
                                                                                                      21                                                                                     66         67

                                                                                                                                                              16
                                                                                                                                           15

                                                                                                                     14
                                                                                     20
                                                                                                                                                    7                                                              59
                                                                                                 13                                                                                                     58
                                                                                                                                                                        8                    57

PIATTAFORME
                                                                                                                                                6                                       9
                                                                          19
                                                                                                12                             5                                                                              60

                                                                                           11                                  4

                                                                   18
                                                                                                                                       3                                                      55
                                                                                     10                                                                                           1

                                                                                                                                                                                                    56
PIATTAFORME                                                     EVITARE   VALUTARE                     PROVARE
                                                                                                                                   2

                                                                                                                                                              ADOTTARE                             ADOTTARE
ADOTTARE                                                                             32
24. HSTS                                                                   33
25. Linux Security Modules                                                      34                                   26                                                                                  80
                                                                                      35                                                                     24                              78
PROVARE                                                                                                                                                                                            79
26. Apache Mesos                                                                     36                                                                                           25
27. Auth0
                                                                                          37                    27
28. AWS Device Farm NUOVO
29. AWS Lambda                                                                   38                                                         28
30. OpenTracing NUOVO
31. Unity beyond gaming                                                              39                                                                                                                 83
                                                                                                                                                        29                             31
                                                                                           40                                                                           30
VALUTARE                                                                   53
                                                                                                           42                                                                                 82
32. .NET Core                                                                                   41
33. Amazon API Gateway                                                                                           43
34. api.ai NUOVO
35. Cassandra carefully                                                                                          44            45
36. Comprensione delle immagini nel cloud NUOVO                                                                                                     47
37. DataStax Enterprise Graph NUOVO                                                                                                                      48
38. Electron                                                                                                                       46                              49
                                                                                                                                                                             50
                                                                                                                                                                                       51                     92
39. Ethereum                                                                                                                                                                                        91
40. Hyperledger NUOVO                                                                                                                                                                         90
                                                                                                                          54
41. IndiaStack                                                                                                                                                                          52
42. Kafka Streams NUOVO
43. Keycloak NUOVO
44. Mesosphere DCOS
45. Mosquitto NUOVO
46. Nuance Mix
47. OpenVR
48. PlatformIO NUOVO
49. Tango NUOVO
50. Voice platforms NUOVO
51. WebVR NUOVO
52. wit.ai

EVITARE
53. CMS as a platform
54. Overambitious API gateways

Il Principio del Privilegio Minimo ci incoraggia a imporre      AMAZON API GATEWAY permette di pubblicare
che i componenti software possano accedere solo alle            API su Internet. Comprende i servizi tipici di un API
risorse di cui hanno bisogno. Tuttavia, un processo Linux       gateway, come la gestione del traffico, il monitoraggio,
normalmente può fare tutto quello che può fare l’utente         autenticazione e autorizzazione. I nostri team hanno
che lo esegue, dall’aprire porte TCP arbitrarie al lanciare     avuto esperienze positive nell’uso di questo servizio
nuove shell. Il framework LINUX SECURITY MODULES                come front end per AWS Lambda, per implementare
(LSM) framework, che consente di inserire estensioni di         architetture serverless. D’altra parte, abbiamo avuto
sicurezza nel kernel, è stato usato per implementare il         problemi quando l’abbiamo usato come API gateway
Mandatory Access Control su Linux. SELinux e AppArmor           di uso generale, come front end di servizi HTTP/HTTPS
sono le più note e diffuse implementazioni compatibili          su EC2. In questi casi, siamo stati frustrati dalla scarsa
con LSM e sono distribuite con il kernel. Raccomandiamo         interoperabilità con le VPC e dalla difficoltà di eseguire
che i team imparino ad usare uno di questi framework            l’autenticazione mediante client certificates. Per via di
di sicurezza (ed è per questo che li abbiamo messi nella        queste differenti esperienze, consigliamo ai team di
cerchia “Adopt”). Questi framework aiutano i team a porsi       sperimentare l’uso di AWS API Gateway con Lambda,
domande su chi ha accesso a quali risorse su host condivisi,    ma di prestare attenzione alla sua efficacia per l’uso più
compresi i servizi in essi contenuti. Questo approccio          generale.
prudente alla gestione degli accessi aiuterà i team a rendere
la sicurezza una parte integrante del loro ciclo di sviluppo.

© ThoughtWorks, Inc. All Rights Reserved.                                                                                                  TECHNOLOGY RADAR | 12
L’enorme numero di dispositivi mobili rende quasi                dello scrivente da un testo e gestisce il flusso di una
impossibile per le aziende testare le proprie app                conversazione. Recentemente acquisita da Google,
mobili su tutti i dispositivi. Ma oggi c’è AWS DEVICE            questa offerta di “comprensione-del-linguaggio-naturale
FARM, un servizio di test per app che consente di                as a service” è in concorrenza con altri attori in questo
eseguire ed interagire con le app Android, iOS e web             mercato come wit.ai e Amazon Lex.
su di un’ampia gamma di dispositivi fisici che sono
simultaneamente ospitati nel cloud. Durante ogni                 La comprensione delle immagini era un tempo un’arte
singola esecuzione sono generati log dettagliati, grafici        oscura che richiedeva un team di data scientist sul
di prestazione ed istantanee delle videate, allo scopo di        posto. Negli ultimi anni, invece, siamo arrivati molto
fornire un riscontro sia generale che specifico per quel         vicini alla soluzione di problemi come la classificazione e
particolare dispositivo. Il servizio offre molta flessibilità,   categorizzazione di immagini e volti, il confronto di volti,
consentendo di alterare lo stato e la configurazione             l’identificazione dei punti facciali ed il riconoscimento
di ogni dispositivo al fine di riprodurre scenari di test        facciale. La COMPRENSIONE DELLE IMMAGINI NEL
molto specifici. I nostri team stanno usando AWS                 CLOUD fornisce accesso a funzionalità di machine-
Device Farm per eseguire test end-to-end sui dispositivi         learning per mezzo di servizi come Amazon Rekognition,
maggiormente diffusi.                                            Microsoft Computer Vision API e Google Cloud Vision
                                                                 API, che possono integrare applicazioni AR e qualsiasi
Da quando si stanno sostituendo le                               altra cosa che comporti il tagging e la classificazione di
                                                                 foto.
applicazioni monolitiche con ecosistemi più
complessi basati su microservizi, tracciare                      Abbiamo ottenuto i primi successi con DATASTAX
le richieste attraverso molteplici servizi sta                   ENTERPRISE GRAPH (DSE Graph) per trattare grandi
diventando la norma.                                             database di grafi. Basato su Cassandra, DSE Graph
                                                                 DSE Graph si colloca nell’ambito di grandi data set
— OpenTracing
                                                                 dove Neo4j, il nostro preferito da molto tempo, inizia a
                                                                 mostrare alcuni limiti. Tale ordine di grandezza ha i suoi
Da quando si stanno sostituendo le applicazioni
                                                                 compromessi; per esempio, si perdono le transazioni
monolitiche con ecosistemi più complessi basati su
                                                                 ACID e l’indipendenza dallo schema di Neo4j; tuttavia,
(micro)servizi, tracciare le richieste attraverso molteplici
                                                                 l’accesso alle tabelle di Cassandra sottostanti,
servizi sta diventando la norma. Fortunatamente
                                                                 l’integrazione di Spark per lavori analitici e il potente
OPENTRACING sta rapidamente affermandosi come
                                                                 linguaggio di query TinkerPop/Gremlin rendono questa
lo standard de facto per il tracciamento distribuito.
                                                                 soluzione un’opzione che vale la pena considerare.
Sviluppato da Uber, Apple, Yelp ed altri fra i maggiori
attori, supporta più tracciatori come Zipkin, Instana, e
                                                                 Il clamore intorno ai blockchain e alle crittovalute
Jaeger. Attualmente OpenTracing è implementato in sei
                                                                 sembra aver raggiunto l’apice, come si vede dal
linguaggi: Go, JavaScript, Java, Python, Objective-C and
                                                                 diradarsi degli annunci un tempo torrenziali in
C++, in maniera indipendente da un fornitore specifico.
                                                                 quest’area, e ci aspettiamo che alcuni dei progetti
                                                                 più speculativi si estinguano con il tempo. Uno dei
Parallelamente alla recente ondata di chatbot
                                                                 blockchain, ETHEREUM, anche se non è il più popolare
e piattaforme vocali, abbiamo osservato una
                                                                 fra i gli esperti di blockchain, viene usato in un numero
proliferazione di strumenti e piattaforme come
                                                                 crescente di nuove iniziative. Ethereum è un blockchain
API.AI, che forniscono un servizio che estrae l’intento

© ThoughtWorks, Inc. All Rights Reserved.                                                           TECHNOLOGY RADAR | 13
pubblico con un linguaggio di programmazione                  con poco o nessun codice. Pronto all’uso c’è il supporto
incorporato, che permette agli sviluppatori di                al single sign-on, al social login, ed ai protocolli standard
scrivere “smart contracts”, che sono movimenti                come OpenID Connect, OAuth2 e SAML..
algoritmici di “etere” (la crittovaluta di Ethereum), in
risposta ad attività in corso sul blockchain. R3CEV, il       MESOSPHERE DCOS è una piattaforma basata su
consorzio che costruisce tecnologia blockchain per            Mesos che astrae l’infrastruttura sottostante, per
le banche, ha rilasciato i suoi primi proof of concept        applicazioni containerizzate ed anche per quelle
su Ethereum. Ethereum è stato usato per costruire             applicazioni che non si desideri eseguire all’interno
una organizzazione autonoma distribuita (DAO,                 di Docker. Per installazioni più modeste ciò potrebbe
Distributed Autonomous Organization), una delle prime         sembrare esagerato, ma stiamo iniziando ad osservare
“corporation algoritmiche”, anche se un recente furto         successi sia con la versione commerciale che con la
di 150 milioni di dollari in “etere” prova che i blockchain   versione open source. Ci piace particolarmente il fatto
e le crittovalute sono ancora il Far West del mondo           che agevoli la portabilità fra diversi fornitori di cloud e di
tecnologico.                                                  hardware dedicato, e che per lavori containerizzati non
                                                              vincoli ad un framework di orchestrazione di container.
HYPERLEDGER è una piattaforma costruita                       Sebbene gli aggiornamenti possano essere un po’
attorno alle tecnologie blockchain che consiste di            troppo complessi rispetto a come ci piacerebbe che
un’implementazione blockchain, chiamata “Fabric”, e di        fossero, l’intero stack si sta stabilizzando bene.
altri tool associati. Trascurando il clamore che circonda
blockchain, i nostri team hanno trovato facile iniziare ad    Nella nostra esperienza con soluzioni Internet of
usare questi tool. Al nostro entusiasmo per Hyperledger       Things (IoT), in cui molti dispositivi comunicano l’uno
si aggiunge anche il fatto che esso sia una piattaforma       con l’altro e/o con un hub di dati centrale, il protocollo
open source supportata da Linux Foundation.                   di connettività MQTT ha dato buona prova di sé.
                                                              Abbiamo cominciato ad apprezzare anche l’MQTT
KAFKA STREAMS è una libreria leggera per applicazioni         broker MOSQUITTO. Non soddisfa tutte le esigenze,
streaming. È stata disegnata con l’obiettivo di               specialmente quelle di scalabilità, ma la sua natura
semplificare la gestione dei processi basati su stream,       compatta e la semplice installazione lo rendono ideale
per avere un modello di programmazione facilmente             per sviluppo e test.
utilizzabile nella costruzione di servizi asincroni. È una
opzione attraente nei casi in cui si voglia applicare il      PLATFORMIO fornisce un ricco ecosistema per lo
modello di programmazione basato su stream, senza             sviluppo IoT attraverso processi di compilazione
aggiungere la complessità della gestione di un cluster        cross-platform, gestione delle librerie ed una buona
(cosa di solito richiesta dai framework più completi          integrazione con gli IDE esistenti. Il completamento del
dedicati ai processi streaming).                              codice intelligente ed il code linter con un terminale
                                                              ed un monitor di porta seriale in dotazione migliorano
In un’architettura a microservizi o in una qualsiasi altra    enormemente l’esperienza di sviluppo. PlatformIO
architettura distribuita, una delle più comuni necessità      organizza e mantiene anche migliaia di librerie e fornisce
è la messa in sicurezza dei servizi o delle API attraverso    una chiara gestione delle dipendenze con versionamento
autenticazione e autorizzazione. Questo è l’ambito in cui     semantico per semplificare lo sviluppo IoT. Abbiamo
si colloca KEYCLOAK. Keycloak è una soluzione open            iniziato ad usare PlatformIO in alcuni progetti IoT e ci
source di gestione dell’identità e dell’accesso, che rende    è veramente piaciuto per la sua semplicità ed ampio
semplice mettere in sicurezza applicazioni e microservizi     supporto di piattaforme and schede.

© ThoughtWorks, Inc. All Rights Reserved.                                                          TECHNOLOGY RADAR | 14
L’anno scorso la realtà aumentata (AR) e la realtà          importanza. Ma è ancora troppo presto per credere agli
mista (MR) sono entrate nella norma insieme alla            annunci iperbolici, e ci aspettiamo che altri grandi attori
realtà virtuale (VR), quest’ultima caratterizzata da una    entrino sul mercato.
barriera di ingresso relativamente più alta, sia a causa
di requisiti hardware che dello sforzo di creazione di
                                                            Stiamo già integrando UI conversazionali
mondi virtuali. Inoltre Pokémon Go ha dimostrato che
gli ordinari smartphone sono sufficienti per creare         all’interno di prodotti e stiamo vedendo
esperienze AR/MR convincenti. TANGO è una nuova             l’impatto di questa nuova interazione nel
tecnologia di sensori hardware per telefoni cellulari che   modo in cui progettiamo le interfacce.
migliora ulteriormente le possibilità per la AR/MR sui
                                                            — Piattaforme vocali
cellulari. Tango consente alle app di acquisire misure 3D
dettagliate dell’ambiente circostante l’utente, cosicché
                                                            WEBVR è una API JavaScript sperimentale che consente
gli oggetti virtuali possano essere piazzati e resi sulla
                                                            l’accesso a dispositivi di realtà virtuale attraverso il
videocamera in modo più convincente. I primi cellulari
                                                            browser. Ha conquistato il supporto della comunità
con tecnologia Tango sono già disponibili.
                                                            ed è disponibile in build giornaliere e anche in versioni
                                                            stabili. Se stai progettando di costruire esperienze
Le PIATTAFORME VOCALI come Amazon Alexa e
                                                            VR nel browser, questo è un eccellente punto di
Google Home stanno cavalcando la cresta dell’onda
                                                            partenza. Questa tecnologia, insieme a strumenti
promozionale; alcuni addirittura annunciano l’ubiquità
                                                            complementari come Three.js, A-Frame, ReactVR, Argon.
delle interfacce vocali conversazionali. Stiamo già
                                                            js e Awe.js, porta l’esperienza della realtà aumentata
integrando UI conversazionali all’interno di prodotti e
                                                            nel browser. Il fiorire di strumenti in questo spazio,
stiamo vedendo l’impatto di questa nuova interazione
                                                            contemporaneamente agli standard della commissione
nel modo in cui progettiamo le interfacce. Nello
                                                            Internet, possono aiutare a promuovere una maggiore
specifico, Alexa è stata costruita fin dall’inizio senza
                                                            adozione di AR e VR.
schermo e considera la UI conversazionale di primaria

© ThoughtWorks, Inc. All Rights Reserved.                                                      TECHNOLOGY RADAR | 15
STRUMENTI
STRUMENTI
ADOTTARE                                                                                23
55. fastlane
56. Grafana                                                   22
                                                                                             17
PROVARE
57. Airflow NUOVO                                                                                                              68
                                 21                                                                          66          67
58. Cake and Fake NUOVO                                                                                                                  69
59. Galen                                                                          16
60. HashiCorp Vault                                                   15
                                                                                                                                               70
61. Pa11y                                            14                                                                                                   71
62. Scikit-learn          20
                                                                               7                                                59
63. Serverless Framework NUOVO13                                                                                         58
                                                                                         8                   57
64. Talisman                                                                                                                                                   72
65. Terraform
                                                                           6                        9                                                               73
VALUTARE           19
66. Amazon Rekognition NUOVO 12                           5                                                                    60        61                              74
67. Android-x86
68. Bottled Water
69. Claudia NUOVO             11                          4
                                                                                                                                          62                                  75
70. Clojure.spec
              18                                                                                                                               63
71. InSpec NUOVO                                                                                                                                                                     76
72. Molecule NUOVO                                                3                                            55
                          10                                                                  1
73. Spacemacs NUOVO                                                                                                                            64
                                                                                                                     56                                                                   77
74. spaCy NUOVO                                               2
                                                                                                                                                               65
75. Spinnaker NUOVO
           EVITARE
76. Testinfra  NUOVOVALUTARE                 PROVARE                               ADOTTARE                         ADOTTARE                             PROVARE                   VALUTARE     EVITARE
77. Yarn NUOVO             32
                         33                                                                                                         81                    89                              103
EVITARE                       34                     26                                                                   80
                                    35                                             24                        78                                                                      102
                                                                                                                                                     88
                                                                                                                    79
                                   36                                                         25
                                                                                                                                                    87                                101
                                        37      27
                                                                                                                                                                               100
                               38                                      28                                                           85
Gli sviluppatori di applicazioni web hanno gioco facile                                                  di dati. Airflow incoraggia pipeline
                                                                                                                                       86           di dati
                                                                                                                                                       99
                                                                                                                                                            manutenibili,
                         39                                                                                         83
quando si parla di semplificare
                            40    ed automatizzare  29
                                                            30
                                                                                                   31    versionabili e testabili, trattando i grafi
                                                                                                                                                   98     diretti aciclici
                    53
diversi workflow di sviluppo;41possono
                                   42    scegliere fra una                                               (Direct
                                                                                                               82 Acyclic Graphs, DAG) come codice. Abbiamo
                                                                                                                              84                   97
varietà di soluzioni per automatizzare43 il loro processo di                                             sfruttato questa configurazione   96    nei nostri progetti e
rilascio. Quando si sviluppa su mobile,
                                      44 invece,
                                            45     abbiamo                                               siamo stati in grado di94creare95
                                                                                                                                              pipeline dinamiche che
                                                  47
due sistemi operativi con due diverse maniere di                                                         hanno prodotto workflow di dati chiari104
                                                                                                                             93                           ed espliciti. Airflow
                                                      48
compilare, testare, distribuire, generare screenshot,
                                             46          49
                                                               50
                                                                                                   51
                                                                                                         rende semplice
                                                                                                                   91    92 definire i vostri   operatori    ed esecutori,
firmare e distribuire applicazioni. Per mitigare il                                                      ed estendere
                                                                                                              90         la libreria cosicché     soddisfi   il livello di
                                         54
                                                                                                    52
problema, i nostri team hanno adottato FASTLANE per                                                      astrazione che meglio si adatta al vostro ambiente.
automatizzare il processo di rilascio per applicazioni
iOS e Android. Con semplici configurazioni e pipeline                                                    Per mitigare il problema, i nostri team
multiple, possono ottenere la continuous delivery per lo
                                                                                                         hanno adottato fastlane per automatizzare
sviluppo mobile.
                                                                                                         il processo di rilascio per applicazioni iOS e
AIRFLOW è uno strumento per creare                                                                       Android.
programmaticamente, schedulare e monitorare pipeline                                                     — fastlane

© ThoughtWorks, Inc. All Rights Reserved.                                                                                                                           TECHNOLOGY RADAR | 16
MSBuild è stato il sistema di build principale               GUID) per mantenere l’anonimità dei volti nei confronti di
nell’ecosistema .NET fin dal suo debutto nel 2005;           AWS, tenendo così conto dei problemi di privacy correlati
tuttavia, ha sempre gli stessi punti deboli che abbiamo      al riconoscimento facciale.
segnalato in Maven. La comunità .NET ha cominciato a
sviluppare alternative a MSBuild che sono più semplici       La combinazione di AWS Lambda con Amazon API
da manutenere e più flessibili, e possono evolvere in        Gateway ha avuto un grosso impatto nella maniera di
maniera più fluida al crescere delle dimensioni del          distribuire servizi e API. Tuttavia, anche lavorando in
progetto. Due di queste alternative sono CAKE E FAKE.        serverless, la quantità di configurazioni necessarie per
Cake usa un DSL scritto in C#, mentre Fake usa un DSL        collegare insieme i pezzi non è banale. CLAUDIA è uno
in F#. Entrambi hanno visto una crescita significativa nel   strumento che automatizza l’installazione di funzioni
corso dell’ultimo anno e si sono dimostrati una valida       AWS Lambda scritte in JavaScript e della configurazione
alternativa a MSBuild, per orchestrare i normali task di     API Gateway associata. I default che fornisce sono
compilazione in progetti .NET.                               convenienti, e i nostri team hanno trovato che permette
                                                             di iniziare a lavorare velocemente con microservizi
La comunità .NET ha cominciato a sviluppare                  basati su Lambda.

alternative a MSBuild che sono più semplici
                                                             Come può un’azienda concedere autonomia ai team di
da manutenere e più flessibili, e possono                    sviluppo, e allo stesso tempo garantire che le soluzioni
evolvere in maniera più fluida al crescere delle             da loro consegnate siano sicure e in linea con gli
dimensioni del progetto.                                     standard? Come si può garantire che i server, una volta
                                                             installati, restino sicuri e in linea con gli standard per
— Cake e Fake
                                                             tutta la durata della loro vita? Questi sono i problemi
                                                             che INSPEC cerca di risolvere. InSpec è uno strumento
SCIKIT-LEARN non è uno strumento nuovo (sta per
                                                             di test dell’infrastruttura ispirato a Serverspec, ma con
compiere dieci anni); quello che è nuovo è il tasso di
                                                             differenze che lo rendono più utile per i professionisti
adozione di strumenti e tecniche di machine learning
                                                             della sicurezza, che hanno bisogno di garantire
al di fuori dell’accademia e delle grandi aziende
                                                             l’aderenza a uno standard di migliaia di server. I test
tecnologiche. Scikit-learn fornisce un robusto insieme
                                                             individuali possono essere combinati in profili di
di modelli e un ricco insieme di funzionalità, e gioca
                                                             sicurezza completi, ed eseguiti remotamente dalla
un ruolo importante nel rendere concetti e capacità
                                                             riga di comando. InSpec è utile durante lo sviluppo,
di machine learning più accessibili a un pubblico più
                                                             ma anche per testare l’infrastruttura di produzione
ampio e spesso non specialista.
                                                             in maniera continua, nella direzione della QA in
                                                             produzione.
Il popolare SERVERLESS FRAMEWORK fornisce
strumenti per creare ed installare applicazioni
                                                             MOLECULE aiuta nello sviluppo e nel test di ruoli
serverless, usando principalmente AWS Lambda e
                                                             di Ansible. Ci risparmia dal dover configurare
altri servizi di AWS. Il Serverless Framework consente
                                                             manualmente il nostro ambiente di test, perché
di creare applicazioni in JavaScript, Python, Java e C#,
                                                             costruisce un’impalcatura per eseguire i test dei
e ha una comunità attiva che contribuisce plugin che
                                                             ruoli di Ansible. Molecule si avvantaggia di Vagrant,
estendono il framework. Il framework supporta anche
                                                             Docker, e OpenStack per gestire macchine virtuali e
il progetto OpenWhisk (nell’incubatore Apache) come
                                                             container, e supporta Serverspec, Testinfra, o Goss
alternativa ad AWS Lambda.
                                                             per eseguire i test. La sequenza dei passi eseguiti di
                                                             default comprende: gestione delle macchine virtuali,
AMAZON REKOGNITION è uno degli strumenti cloud
                                                             lint di codice Ansible, test di idempotenza e test di
di analisi delle immagini che abbiamo menzionato altrove
                                                             convergenza. Anche se è un progetto abbastanza
in questo Radar. Quello che ci piace è che Amazon ha
                                                             giovane, vediamo in Molecule un grande potenziale.
adottato un approccio relativamente nuovo (usando le

© ThoughtWorks, Inc. All Rights Reserved.                                                       TECHNOLOGY RADAR | 17
Come qualsiasi fan di Emacs dirà, Emacs è più di un              Google Cloud Platform, AWS e Pivotal Cloud Foundry.
text editor; è una piattaforma per applicazioni basate           Si può integrare Spinnaker con Jenkins per eseguire un
su caratteri. Negli ultimi anni, c’è stata un’esplosione         job di compilazione su Jenkins. A noi piace l’approccio
di nuovi sviluppi su questa piattaforma, ma pensiamo             opinionato di Spinnaker al rilascio di microservizi sul
che SPACEMACS meriti un’attenzione speciale.                     cloud, tranne il fatto che le pipelines di Spinnaker sono
Spacemacs fornisce un’introduzione alla piattaforma              create con un’interfaccia utente e non possono essere
Emacs, con una nuova interfaccia utente basata sulla             configurate come codice.
tastiera, i layer di customizzazione semplificati e una
distribuzione curata di pacchetti Emacs. Uno degli               Dato l’ampio utilizzo di strumenti per la gestione della
obiettivi di questo progetto è di essere il meglio dei due       infrastruttura, non deve sorprendere che il concetto di
mondi, combinando l’interfaccia utente di Vim con la             “infrastructure as code” abbia guadagnato molto spazio.
riprogrammabilità interna di Emacs. Noi pensiamo che             Questa tendenza porta con sé la necessità di testare
gli strumenti di produttività dei programmatori siano            automaticamente tale codice. TESTINFRA permette di
un componente vitale dello sviluppo software efficace,           testare lo stato dei server, sia che essi siano configurati
e se è passato un po’ di tempo dall’ultima volta che hai         manualmente che tramite strumenti quali Ansible,
considerato Emacs, ti consigliamo di dare un’occhiata a          Puppet and Docker. Testinfra è un plugin del test engine
come Spacemacs ripensa questa classica piattaforma di            Pytest e mira ad essere equivalente a Serverspec.
sviluppo.
                                                                 Dato l’ampio utilizzo di strumenti per la
SPACY è una libreria di Natural Language Processing
                                                                 gestione della infrastruttura, non deve
(NLP) scritta in Python. È una libreria ad alta
performance, pensata per l’uso in produzione, e                  sorprendere che il concetto di “infrastructure
applica modelli NLP adatti all’elaborazione di testi             as code” abbia guadagnato molto spazio.
che contengano emoticon e segni di punteggiatura                 — Testinfra
inconsistenti. A differenza di altri framework NLP, spaCy
è una libreria che può essere inserita in un progetto            YARN è un nuovo package manager che sostituisce
e non una piattaforma; è destinata ad applicazioni in            l’attuale workflow del client npm, rimanendo
produzione, invece che all’addestramento di modelli per          compatibile con il registry di npm. Utilizzando il client
la ricerca. Si accompagna bene a TensorFlow e al resto           npm è possibile ottenere strutture ad albero (sotto
dell’ecosistema dell’Intelligenza Artificiale in Python.         la directory node_modules) differenti a seconda
Abbiamo usato spaCy in un contesto enterprise per                dell’ordine in cui le dipendenze sono installate.
costruire un motore di ricerca che accetta domande               Questa natura non deterministica del client npm
in linguaggio naturale ed aiuta gli utenti a prendere            può causare problemi tipo “sulla mia macchina
decisioni di business.                                           funziona”. Yarn risolve questo problema spezzando
                                                                 l’installazione in più passi (risoluzione delle
Netflix ha reso open source SPINNAKER, la sua                    dipendenze, scaricamento dei pacchetti e linking)
piattaforma per la continuous delivery (CD) di                   ed utilizzando algoritmi deterministici e lock-files, in
microservizi. In confronto ad altre piattaforme CI/CD,           modo da garantire installazioni ripetibili. Noi abbiamo
Spinnaker implementa la gestione di cluster e il rilascio        inoltre rilevato, nei nostri ambienti di continuous
sul cloud di immagini customizzate (es. AMI) come                integration (CI), tempi di build molto più rapidi, resi
caratteristica principale. Supporta di default l’installazione   possibili dal caching dei pacchetti scaricati.
e la gestione di cluster per diversi fornitori di cloud, come

© ThoughtWorks, Inc. All Rights Reserved.                                                           TECHNOLOGY RADAR | 18
68
                                                    21                                                                                         66         67
                                                                                                                                                                               69
                                                                                                            16
                                                                                         15
                                                                                                                                                                                         70
                                                                   14                                                                                                                               71
                                   20
                                                                                                  7                                                                  59
                                               13                                                                                                         58
                                                                                                                      8                        57
                                                                                                                                                                                                         72

LINGUAGGI & FRAMEWORK
                                                                                              6                                       9                                                                            73
                       19
                                              12                             5                                                                                  60             61                                       74

                                                                                                                                                                                62                                           75
                                         11                                  4

                 18                                                                                                                                                                      63                                          76
                                                                                     3                                                          55
                                   10                                                                                           1
                                                                                                                                                                                         64
                                                                                                                                                      56                                                 65                               77
                                                                                 2

LINGUAGGI
     EVITARE   & FRAMEWORK
             VALUTARE PROVARE                                                                               ADOTTARE                                 ADOTTARE                                      PROVARE                        VALUTARE      EVITARE

ADOTTARE                           32
                         33                                                                                                                                           81                            89                                    103
78. Ember.js
                              34                                   26                                                                                      80
79. Python 3                        35                                                                     24                                  78                                                                                    102
80. ReactiveX                                                                                                                                        79
                                                                                                                                                                                               88
81. Redux                          36                                                                                           25
                                                                                                                                                                                              87                                      101
PROVARE                                 37                    27
82. Avro NUOVO                                                                                                                                                                                                                 100
83. Elixir                     38                                                         28                                                                          85
                                                                                                                                                                                              86                        99
84. Enzyme
85. Hangfire NUOVO                 39                                                                                                                     83
                                                                                                      29                             31                                                                       98
86. Nightwatch NUOVO                     40                                                                           30
                   53
87. Phoenix                                              42                                                                                     82
88. Quick and Nimble                          41                                                                                                                                                              97
                                                                                                                                                                          84
                                                               43                                                                                                                                  96
89. Vue.js
                                                               44            45
VALUTARE                                                                                                                                                                            94        95
                                                                                                  47                                                                                                                     104
90. Angular 2 NUOVO                                                                                                                                                       93
91. Caffe NUOVO                                                                                        48
                                                                                                                 49
                                                                                 46                                        50
92. DeepLearning.scala NUOVO                                                                                                         51               91        92
93. ECMAScript 2017
                                                                                                                                                90
94. Instana NUOVO                                                       54
                                                                                                                                      52
95. JuMP
96. Keras NUOVO
97. Knet.jl NUOVO
98. Kotlin NUOVO
99. Physical Web
100. PostCSS NUOVO
101. Spring Cloud NUOVO
102. Three.js
103. WebRTC

EVITARE
104. AngularJS

PYTHON 3 ha introdotto molti elementi utili, che                                                                                           dati concorrenti ed appunto operazioni di I/O non
tuttavia non sono retrocompatibili con Python 2.x.                                                                                         bloccanti. La libreria open source REACTIVEX fornisce
Ha anche rimosso diverse componenti di Python 2.x                                                                                          una elegante astrazione di questi concetti, oltre che
che erano state mantenute per retrocompatibilità,                                                                                          efficaci strumenti applicativi per gestirli, ed estende
rendendo Python 3 più facile da imparare ed utilizzare,                                                                                    il pattern observable agli stream di eventi asincroni.
oltre che complessivamente più coerente. La nostra                                                                                         Attorno a ReactiveX inoltre si è sviluppata una comunità
esperienza nell’utilizzo di Python 3 negli ambiti di                                                                                       attiva di sviluppatori ed il numero di linguaggi supportati
machine learning e sviluppo di applicazioni web mostra                                                                                     è in continua espansione (l’ultimo entrato è RxSwift). La
che sia il linguaggio che la gran parte delle librerie                                                                                     libreria inoltre è integrata con le maggiori piattaforme
a supporto sono maturati e sono pronti per essere                                                                                          mobile e desktop.
adottati. Abbiamo risolto piccoli problemi in alcune
librerie tramite fork e patch, oppure abbiamo evitato di                                                                                   La libreria open source ReactiveX fornisce
usare librerie Python 2.x non più supportate. Il nostro
                                                                                                                                           una elegante astrazione di questi concetti:
suggerimento per chi sviluppa in Python è quindi di
utilizzare Python 3.                                                                                                                       thread safety, sincronizzazione, strutture dati
                                                                                                                                           concorrenti ed I/O non bloccante; fornisce
I sistemi distribuiti spesso utilizzano multi-threading,                                                                                   efficaci strumenti applicativi ed estende il
meccanismi di comunicazione basati su eventi e
                                                                                                                                           pattern observable agli stream di eventi
I/O non bloccante al fine di migliorare l’efficienza
complessiva. Queste tecniche di programmazione
                                                                                                                                           asincroni.
comportano difficoltà quali: gestione dei thread a                                                                                         — ReactiveX
basso livello, thread safety, sincronizzazione, strutture

© ThoughtWorks, Inc. All Rights Reserved.                                                                                                                                                                      TECHNOLOGY RADAR | 19
Puoi anche leggere