Post on 04-Jun-2020
1
TECHNOLOGIERADAR
2019/2020
2 adessoTECHNOLOGIE RADAR 2019
3
Softwareentwicklungstechnik diskutieren
Im Vergleich zu vielen Trend-Radaren, die abstrakt die grossen Themen wie z. B. Blockchain, 5G, Künstliche Intelligenz und Internet of Things adressieren, ist das Technologie-Radar ein aktiv genutztes Werkzeug für das Wissensmanagement bei adesso, das wir für Ent-scheidungen in realen Softwareentwicklungsprojekten hinzuziehen und in dem sich die Erfahrungen aus diesen Projekten spiegeln. Das Radar ist entsprechend bodenständig und praxisnah, befeuert Diskussionen, hilft aber auch, die Ergebnisse dieser zu strukturieren und zugänglich zu machen.2018 haben wir erstmals unser bis dahin nur intern verwendetes Radar mit der Bewertung von Technologien, Plattformen, Methoden und Werkzeugen der Softwareentwicklung veröf-fentlicht. Dadurch hat sich der Austausch mit unseren Kunden, mit Software Engineers und IT-Verantwortlichen intensiviert. Daran möchten wir festhalten und haben für 2019/2020 eine aktuelle Version erstellt, die viele neue Elemente und veränderte Bewertungen enthält. Wir freuen uns schon jetzt auf lebhafte Diskussionen über einzelne Technologien oder stra-tegische Überlegungen zu der Gesamtentwicklung.Neben den Radaren für Java-, Microsoft-, JavaScript- und Mobile-Projekte haben wir ein neues Fokusradar für das Thema Java Toolchain ausgearbeitet. Dieses Radar widmet sich den Elementen, die für die Umsetzung effizienter, wirtschaftlicher Entwicklungsprozesse im Java-Umfeld notwendig sind – oder auch hinderlich sind. Dazu zählen Werkzeuge, aber auch Plattformen, beispielsweise für die Unterstützung von Social-Coding-Praktiken.Die Bewertungen im Technologie-Radar sind als Momentaufnahme zu verstehen. Sie sind nicht an eine bestimmte Projektkonstellation angepasst und es ist die Aufgabe von Soft-ware Architects, die für ein Projekt richtige Auswahl an Methoden, Techniken, Plattformen und Werkzeugen zu wählen. Dennoch gibt das Radar unsere grundsätzliche Philosophie von modernem Software Engineering wieder, die sich hinter den Bewertungen verbirgt. Wir haben festgestellt, dass Sie nicht nur unsere Bewertungen im Radar interessieren, sondern auch die Prozesse für die Erstellung und Bearbeitung des Radars. Wir nutzen dafür Methoden der Softwareentwicklung, arbeiten mit Merge bzw. Pull Requests, Diskussions-plattformen und CI/CD Pipelines.Für die Anwendung auf die konkrete Projektsituation ist unser Radar ganz pragmatisch nutzbar: Malen, kringeln, streichen und unterstreichen Sie nach Belieben. Wir wünschen Ihnen viel Spass bei der Lektüre und freuen uns auf spannende Diskussionen zu dieser Ausgabe.
Thomas Franz Frank Dobelmann
Head of Technology Board Chief Technology Manager
4 adessoTECHNOLOGIE RADAR 2019/2020
Radare für typische Pro-jektkonstellationenJedes Projekt ist anders, aber es gibt für adesso typische Projektkonstellationen, die häufig stark durch den Technologie-Stack unterschieden werden können.
Entsprechend dieser Konstellationen ist das Radar in „Teil-Radare“aufgeteilt:
> Java-Projekte > Microsoft-Projekte > JavaScript-Projekte > Mobile-Projekte
Zusätzlich dazu haben wir für diese Aus-gabe ein Fokusradar Java Toolchain er-stellt, das Plattformen und Werkzeuge der Java-Projekte fokussiert darstellt.
Diese Form der Aufteilung ist natürlich nicht völlig trennscharf. Dadurch ist es möglich, dass ein Element in mehreren Ra-daren bewertet wird, und dies auch unter-schiedlich! In einem Microsoft-Projekt ist das Betriebssystem Linux beispielsweise zu „evaluieren“, weil es historisch bedingt ein tendenziell neuer, in wenigen Micro-soft-Projekten genutzter Lösungsbaustein ist, während es im Java-orientierten Radar überhaupt keine Erwähnung findet – es ist quasi Standard.
Ähnlich verhält es sich auch in umgekehrter Richtung. Microsoft-Werkzeuge und -Tech-nologien stellen immer häufiger auch Lö-sungsbausteine in Java- und JavaScript-ori-entierten Projekten dar. Der Editor Visual Studio Code und der Microsoft SQL-Server sind Beispiele dafür. JavaScript hat sich als Sprache und mit einem Ökosystem für die Entwicklung von Webanwendungen etab-liert. Deshalb erhält JavaScript einen eige-nen Radar. Gleichzeitig spielt JavaScript in Java- und Microsoft-Projekten häufig eine Rolle.
Ringe: Die BewertungsskalaDie Elemente, die in einem Radar bewertet werden, sind als Punkte dargestellt. Die Bewertung jedes Elements wird durch seine Positionierung auf einem von drei Ringen abgebildet. Jeder Ring steht für eine Bewertung:
EINSETZENDer innere Ring enthält Elemente, die empfohlen werden. Die Empfehlung resultiert aus positiven Projekterfahrungen sowie dem Vergleich mit Alter-nativen.
EVALUIEREN Der mittlere Ring fasst Elemente zusammen, für die derzeit nicht die ausreichende oder eindeutig positive Projekterfahrung vorliegt, um eine pau-schale Einsatzempfehlung zu geben. Elemente mit dem Status „evaluieren“ sind dennoch häufig pro-duktiver Bestandteil von Projekten, aber eben noch nicht in umfassender Breite im Einsatz.
ÜBERDENKEN Diese Bewertung hat primär den Zweck, vor dem Hintergrund der rasanten Veränderungen in der IT für alternative Elemente zu sensibilisieren. Der Ring „Überdenken“ enthält nicht selten Elemente, für die schon mal eine Einsatzempfehlung existierte. Die Bewertung gibt jedoch Hinweise auf aktuell favori-sierte, alternative Elemente
5
Die Quadranten eines RadarsUm die Elemente in einem Radar zu strukturieren, fasst jeder Quadrant ähnliche Elementtypen zusammen. Die Quadran-ten beinhalten die im folgenden beschriebenen Kategorien:
METHODEN UND TECHNIKEN: In diesem Quadranten befinden sich Ansätze, Best Practices, Vorgehensweisen und Verfahren, die un-abhängig von einer technischen Unterstützung oder Implementierung bewertet werden. Beispielsweise findet sich Continuous Integration dort wieder, unab-hängig von der Bewertung potenzieller Plattformen und Werkzeuge, die eine bestimmte Methodik unter-stützen, z. B. Jenkins für Continuous Integration.
WERKZEUGE: Die Rubrik Werkzeuge fasst Hilfsmittel für die Unter-stützung von Aufgaben in Softwareentwicklungspro-jekten zusammen, beispielsweise Werkzeuge für die Programmierung, die Abhängigkeitsverwaltung, die Paketierung von Anwendungen, die Ausführung von Tests etc.
PLATTFORMEN: Plattformen stellen eine einheitliche technische Grundlage für eine spezielle IT-Fragestellung bereit, beispielsweise Microsoft Azure als Cloud-Plattform für die Entwicklung und den Betrieb verschiedenster Services, aber auch eine Oracle-Datenbank als Platt-form für die Persistierung von Daten.
SPRACHEN UND FRAMEWORKS: Die Rubrik Sprachen und Frameworks umfasst Programmier-, Auszeichnungs- und Modellierungs-sprachen, beispielsweise Java, XML und UML sowie Frameworks, die die Lösung bestimmter Program-mieraufgaben unterstützen wie die Implementierung der Kommunikation zwischen verteilten Anwen-dungskomponenten oder die Implementierung von web-basierten Nutzerschnittstellen.
Nutzungsweise und Ziel-setzung des RadarsDie Einordnung der Elemente in den Rada-ren ist eine Momentaufnahme und dient primär als Diskussionsanker. Sie nimmt keine Architekturentscheidungen vorweg, sondern soll lediglich die Bearbeitung von Architekturfragestellungen unterstützen. Die Bewertungen des Radars enthalten keine bestimmten Annahmen über pro-jektspezifische Ausgangssituationen bzw. unterstellen völlige Wahlfreiheit und eine „Green-Field“-Situation.
Die heutigen Bewertungen werden somit nicht denen von morgen entsprechen. Vie-le Bewertungen werden tatsächlich auch kontrovers diskutiert und es gibt bei der Bewertung der Radarelemente bisweilen gänzlich gegensätzliche Einschätzungen. Die dadurch geführte Diskussion ist Teil einer lebendigen Auseinandersetzung, die letztlich zu einem gesteigerten Bewusst-sein für Lösungsmöglichkeiten und Quali-tät führt.
6 adessoTECHNOLOGIE RADAR 2019/2020
EINSETZEN
PLATT-FORMEN
SPRACHEN UND FRAME-
WORKS
EVALUIERENÜBERDENKEN
MySQL
Spark
Post-greSQL
Istio
Kafka
Keycloak
Apache CXF
EJB
Groovy
Hystrix
Axon Fra-mework
concur-rency-li-
mits
Kotlin
resilien-ce4j
JavaFX
JSF
Lucene
RCP
Scala
Spring BootSpring
Cloud
Spring Core
Spring MVC
Vert.x
JAVA-PROJEKTE IM RADAR
DB2
Ku-bernetes (self-ma-
naged)
7
EINSETZEN
METHODEN UND
TECHNIKEN
WERKZEUGE
EVALUIEREN ÜBERDENKEN
MariaDB
MongoDB
Kuberne-tes (mana-
ged)
Oracle DB
Hadoop
Elastic Search
MSSQL
ESB
Java Desktop Clients
JEE Ap-plication
Server
JEE Portal Server
SAFe
Pro-gressive
Web Apps (PWA)
Event Sourcing
Micro-services
auf Basis JEE
Re-active
Programm-ing
Do-main Dri-
ven Design (DDD)
Agile Entwick-lungspro-
zesse Requi-rements
Engineering mit IREB
Leichtge-wichtige Archi-
tekturen Res-sourcen-
orientierte Web-Schnitt-
stellen
Webservi-ces
Responsi-ve Design
Re-silient
Software Design
Ver-teilte
Architek-turen
Versions-kontrolle für Datenbanken
JaCoCo
leanIX
Nect
Servi-ce-Now
Per-formance Co-Pilot
iWelcome
Rust
Spring In-tegration
Swing
WicketVaadin
HTML 5
Hibernate
Go
Feign
RxJava
CSS 3Jersey/ RESTeasy
CDI
Apache Camel
Java
jQAssis-tant
Solr
8 adessoTECHNOLOGIE RADAR 2019/2020
Mit der Veröffentlichung von Java 11 hat Oracle das Lizenzmodell für sein passendes Java Development Kit (JDK) geändert. Zuvor konnte es mit wenigen Ein-schränkungen kostenlos genutzt werden. Im neuen Modell wird eine kostenpflichtige Lizenz für den pro-duktiven Einsatz benötigt. Bedeutet dies, dass Java nicht mehr frei ist?
Oracle JDK vs. Open JDKMit Java 11 hat sich auch die Beziehung des Oracle JDKs zum OpenJDK geändert. Das OpenJDK steht schon seit Jahren mit öffentlich verwaltetem Sourcecode zur Verfügung. Aber es konnte nie garantiert werden, dass sich ein Programm auf beiden JDK-Varianten gleich verhält. Somit gab es bei freier Verfügbarkeit des Oracle JDKs wenige Gründe, auf die quelloffene Variante zu setzen. Die Unterschiede wurden nun be-seitigt und die Quellen des OpenJDKs dienen heute als Grundlage für beide Distributionen. Was Oracle heu-te mit seiner JDK-Distribution verkauft, ist also pro-fessioneller Support. Das grösste Manko: Von Oracle werden über die Zeitrahmen der halbjährlichen Re-lease-Zyklen hinaus keine fertig gebauten Versionen des OpenJDKs mit Bug- und Security-Fixes bereitge-stellt. In Softwareprojekten kann die Auswahl des geeigneten JDKs jedoch nicht aufgeschoben werden. Eine generelle Empfehlung ist es daher, auf die alle drei Jahre erscheinenden LTS-Versionen zu setzen und nicht dem Release-Zyklus zu folgen. Neue Features stehen dadurch erst später zur Verfügung, aber für die meisten Projekte dürfte der Nutzen unter dem Aufwand einer ständigen Migration liegen.
Einige Unternehmen, die stark mit dem Java-Öko-system verbunden sind, bieten eigene Distributionen mit dem Versprechen an, Fixes für mehrere Jahre zu liefern. Red Hat hat die aktuelle Schirmherrschaft über das OpenJDK-Projekt übernommen, um die Be-teiligungen aller Unternehmen zu koordinieren. Oracle gibt also sein Monopol über das JDK auf und teilt die Verantwortung mit der Java Community. Somit steht Java heute freier zur Verfügung als zuvor und der Ein-fluss der Community auf das OpenJDK ist wichtiger geworden. Damit haben User eine bessere Wahlfrei-heit, um die für sie passende Distribution zu finden. Eine allgemeine Empfehlung für die Auswahl einer konkreten Distribution lässt sich schwer geben, da viele individuelle Kriterien wie benötigte Support-Zei-ten oder Plattformverfügbarkeit berücksichtigt wer-den müssen.
JEE-WeiterentwicklungÄhnlich wie mit OpenJDK verfährt Oracle mit der Über-gabe der Java-EE-Weiterentwicklung an die Communi-ty als Jakarta EE unter der Schirmherrschaft der Eclip-se Foundation. Diese hatte bereits seit längerem einen stärkeren Einfluss mit beschleunigter Weiterentwick-lung gefordert, was zuletzt in die parallele Entwicklung des Eclipse MicroProfile mündete. Getrieben von ver-schiedenen Industriegrössen wurden neue Standards entwickelt, um den Einsatz von Java-EE-Technologien in Microservices-Landschaften zu vereinfachen. Das Profil wird rasant weiterentwickelt und hat inzwischen die Version 2.2 erreicht, in der die bekannten Jakar-ta-EE-Funktionen um Spezifikationen für Resilience, Konfigurationsmanagement, Health Check, Metriken, JWT-Authentication, Open API und Open Tracing er-weitert werden.
User haben die Wahl zwischen verschiedenen Ser-ver-Distributionen: Entweder in klassischen all-inclu-sive Formaten (z. B. Payara, TomEE oder WildFly), die mit definierten Profilen verschiedene Paketierungen anbieten, oder als Customizable Server (z. B. Open-Liberty oder Thorntail (ehemals WildFly Swarm)), bei dem sich jedes Feature modular auswählen lässt.
Ein Wermutstropfen ist, dass Oracle nicht bereit ist, bei seinen Namensrechten auf Java Kompromisse ein-zugehen. Dies verhindert die API-kompatible Weiter-entwicklung der Standards, was Migrationsaufwände für bestehende Projekte bedeuten wird. Es gibt Lö-sungsansätze, die besprochen werden, aber bis zur Umsetzung muss dies als Negativpunkt bei der Tech-nologieauswahl gewertet werden.
Diese Veränderungen benötigen Zeit. Wir empfehlen abzuwarten, wie sich Jakarta EE und das MicroProfile weiterentwickeln werden. Bei jeder Auswahl geeig-neter Technologien müssen immer die individuellen Umstände bewertet werden. Mit dem Spring-Techno-logie-Stack steht eine bewährte Alternative bereit, die für die meisten neuen Projekte eine geeignete Basis bietet.
Mit Jakarta EE ist es einfacher als je zuvor, sich an der Weiterentwicklung der Enterprise-Umgebung zu beteiligen. Die Transition bedarf etwas Zeit, aber die Schaffung des MicroProfile zeigt deutlich, dass der Bedarf und die Bereitschaft aller Player gross ist, dem Standard zu einer neuen Blüte zu verhelfen.
Unser Fazit: Java wird zwar konservativ, aber konti-nuierlich weiterentwickelt und ist in einer Welt von Cloud-Infrastrukturen und containerisierten Anwen-dungen immer noch unsere erste Wahl für IT-Projekte.
JAVA-PROJEKTE IM RADAR
9
Selektierte Einzelbewertungen Die folgenden Bewertungen aus unserem Java-Radar möchten wir Ihnen näher vorstellen:
Microservices auf Basis von JEE • evaluieren > Die im MicroProfile definierten Erweiterungen zum JEE-Standard schliessen die Funkti-
onslücken, um Java Enterprise Server sinnvoll in Microservice-Architekturen einsetzen zu können. Kombiniert mit modernen Servern wie Open Liberty und Thorntail ist es einfach möglich, robuste Business-Anwendungen zu implementieren, die zusätzlich zu den An-forderungen an Funktionen und Features auch den operativen Anforderungen moderner Anwendungen gerecht werden.
Spring Boot • einsetzen > Spring Boot hat sich seit mehreren Jahren in vielen unserer Projekte für die Implementa-
tion von businesskritischen Anwendungen bewährt. Es unterstützt viele Funktionen, die in modernen Architekturen benötigt werden, um zukunftssichere Applikationen schnell und einfach zu entwickeln.
Kubernetes (self-managed) • überdenken > Kubernetes ist ein anbieterunabhängiger Defacto-Standard für Container-Manage-
ment-Plattformen. Der selbst gehostete Betrieb von Kubernetes ist aufgrund der Kom-plexität zu überdenken. Stattdessen empfehlen wir einen gemanagten Betrieb von Kuber-netes. Das Microsoft-Radar enthält z. B. eine Einsatzempfehlung für Azure Kubernetes Services (AKS).
ISTIO • evaluieren > Istio ist eine Service-Mesh-Implementierung für Kubernetes und OpenShift, welche Quer-
schnittsthemen der Plattformen wie Sicherheit, API-Management, Resilienz, Monitoring und Topologiedokumentation der Container-Plattformen übernimmt. Istio nutzt das Si-decar-Pattern von Kubernetes und wir haben in diversen Einsatzszenarien festgestellt, dass es besonders in komplexeren Microservice-Architekturen ein nützliches Lösungs-element sein kann.
jQAssistant • einsetzen > jQAssistant ist ein Werkzeug, welches die Architektur einer Anwendung in eine Graphda-
tenbank importiert. Dies ermöglicht Abfragen zu erstellen, um die Architektur zu prüfen. Über Plugins kann jQAssistant beispielsweise in den Build-Prozess integriert werden und einen Build fehlschlagen lassen, wenn gegen eine Architekturregel verstossen wurde. jQAssistant hat sich bereits in mehreren adesso-Projekten als nützliches Werkzeug er-wiesen.
10 adessoTECHNOLOGIE RADAR 2019/2020
JAVASCRIPT- PROJEKTE IM RADAR
EINSETZENEVALUIERENÜBERDENKEN
Native-Script
ReactNa-tive
Lodash
ReactJS
RxJS
ECMA-Script NEXT
Pact
Angular JS
Aurelia
Ember
PLATT FORMEN
SPRACHEN UND FRAMEWORKS
11
EINSETZEN EVALUIEREN ÜBERDENKEN
Node.js – Server-Si-
de-JavaScript
API-First
Consu-mer-driven
Contracts
Kom-ponen-
ten-Archi-tektur
Micro Frontends
Mobile First
Off-line-First
Progres-sive Web
AppsRespon-sive Web
App
Sin-gle-Page
Applicati-ons
State Manage-
ment Library
TDD/BDD
Tool-gestützte
Komponen-ten-Doku-mentation
Web Compo-
nents
Web-ba-sierte Desk-
top-Apps
No-Backend
Redux
Resour-ce-orien-ted Client
Architecture (ROCA)
Web-An-wendung
als reaktives System
Angular CLI
Babel
Codelyzer
ESLint
Jest
Karma
NPM
Prettier
Protractor
SASS
storybook
TSLint
WebpackYarn
Compodoc
Graph QL
WebAuthn
WebXR
Bower
Grunt
Gulp
Yeoman
AngularECMA-Script 6
Jasmine
JavaScript
TypeScript
Vue.js
METHODEN UND TECHNIKEN
WERKZEUGE
12 adessoTECHNOLOGIE RADAR 2019/2020
Durch die starke Verbreitung von client- sowie server-seitigen JavaScript-Lösungen in den letzten Jahren ist JavaScript zu einem ernst zu nehmenden Teil unserer Angebotspalette geworden. Dafür benötigen wir ne-ben dem Reifen von Sprachen und Frameworks auch eine verlässliche und stabile Toolchain. In unserem aktuellen Radar spiegelt sich diese Reifung insbe-sondere durch neue Elemente in den Quadranten für „Werkzeuge“ und „Sprachen und Frameworks“ wider.
Front- und Backend einheitlichClient-seitige Single Page Applications (SPAs) sind mittlerweile im grossen Mass im Einsatz. Auch die Einführung der server-seitigen Technologie Node.js ersetzt in mehreren unserer Projekte die üblichen Ba-ckend-Technologien – sowohl in grossen als auch in kleinen Unternehmen. Durch den Einsatz derselben Programmiersprache im Frontend und Backend konn-ten wir die Agilität kleiner Teams erhöhen und die Erstellungs- und Instandhaltungskosten für unsere Kunden reduzieren.
In den letzten Jahren wurden viele monolithische server-seitige Applikationen in leichtgewichtige Mic-roservices aufgebrochen (u. a. auch mit Node.js). Da die Komplexität der SPAs immer weiter zugenommen hat, gibt es mittlerweile auch im Frontend die Be-strebung, die Monolithen aufzuteilen. Der Ansatz von Micro Frontends wird daher aus unserer Sicht an Be-deutung gewinnen.
PWAs auf dem VormarschEin weiterer starker Trend sind die sogenannten „Progressive Web Apps”. Dabei handelt es sich um Webanwendungen, die wie native mobile oder Desktopanwendungen genutzt werden können und die auch Hardware der Geräte nutzen können. Da schon 2018 das „Year of PWAs“ ausgerufen wurde und der Browser Support mittlerweile gut genug ist, um PWA-Features produktiv einsetzen zu können, ist auch das für uns eines der Top-The-men im Jahr 2019.
Für unsere Kunden ist Sicherheit von jeher ein wichtiger Faktor bei der Entscheidung zum Ein-satz von Technologien. Wir möchten im aktuellen Technologie-Radar den Fokus auf aktuelle Au-thentifizierungsschnittstellen im Webumfeld le-gen. WebAuthn ist aus unserer Sicht ein wichtiger Baustein für die Verbindung vielschichtiger und sicherheitsrelevanter Prozesse im Netz.
JAVASCRIPT-PROJEKTE IM RADAR
13
Jest • einsetzen > Jest ist ein leichtgewichtiges Testing Framework, welches uns vor allem durch seine ein-
fache Bedienung, gute Performance und interessanten Features wie Snapshot Testing überzeugt. Es ist sehr leicht zu konfigurieren und gibt dem Entwickler ein schnelles und aussagekräftiges Feedback über den Status seiner Tests. Darüber hinaus bietet Jest eine einfache Migration von bestehenden Unittests, wodurch es sich auch für bereits laufende Projekte als eine echte Alternative zu Karma, Mocha und Co. eignet.
PWAs • einsetzen > Der Begriff Progressive Web App (PWA) stellt im Wesentlichen einen Eigenschaftenkata-
log dar, dessen Anwendung eine Webseite zu einer Web App mit Merkmalen einer nativen App macht. Neben der responsiven Umsetzung muss eine PWA als Mindestanforderung offline funktionieren, Push-Benachrichtigungen unterstützen, den App-Zustand über Links verfügbar machen und über HTTPS ausgeliefert werden. Werden diese Anforde-rungen erfüllt, erlauben alle mobilen Browser (mit Einschränkungen bei Safari Mobile), dass sich die PWA neben nativen Apps auf dem Hauptbildschirm platzieren und sich dem Nutzer fortan wie eine native App präsentieren kann – also z. B. ohne Navigationsleiste oder sonstige Hinweise, dass die App in einem Webbrowser läuft.
Micro Frontends • einsetzen > Micro Frontends sind ein Architekturstil, der an dem Grundgedanken der Microservice-Ar-
chitektur angelehnt ist. Da in den vergangen Jahren dank der SPAs die Frontend-Anwen-dungen immer komplexer wurden, haben wir es auch hier mittlerweile häufig mit grossen monolithischen Anwendungen zu tun, die sehr komplex in Bezug auf Wartbarkeit und Erweiterbarkeit sind. Mit einer Micro-Frontend-Architektur kann ein solcher Monolith in mehrere kleine eigenständige Web Apps aufgeteilt werden. Zudem bietet dieser Ansatz die Möglichkeit, verschiedene Frameworks parallel zu nutzen.
WebXR • evaluieren > WebXR ist ein junger Standard, der immer mehr an Bedeutung gewinnt. XR steht für „Ex-
tended Reality” und beschreibt die Erweiterungen oder das Überdecken der Realität mit virtuellen Inhalten – also ein gemeinsamer Standard für AR und VR. Es können AR- und VR-Features in einer Webanwendung bzw. im Browser genutzt werden. Die denkbaren Einsatzgebiete sind vielfältig und wir haben bereits erste Projekte für unsere Kunden damit umgesetzt.
WebAuthn • evaluieren > Die Web Authentication API (auch WebAuthn) benutzt eine asymmetrische Verschlüs-
selung anstelle eines Passwortes oder einer SMS zur Registration und Authentifikation. Hierbei übernimmt ein von der Webseite losgelöstes Browser-Modul die Authentifizie-rung. Die vom Server geschickte Challenge wird mithilfe von Identifikationsmerkmalen (Iris, Stimme, Fingerabdruck, Smartcard oder anderer Tokens) signiert. Im Anschluss wird sie an den Server zurück übertragen, welcher die Korrektheit mittels des öffentlichen Schlüssels nachprüfen kann. Somit werden keine Schlüssel über das Netzwerk übertragen und der Nutzer muss sich keine Passwörter mehr merken.
Selektierte Einzelbewertungen Das Radar für JavaScript-Projekte enthält über 50 bewährte Elemente. Nachfolgend sind bei-spielhaft fünf Elemente aus unterschiedlichen Kategorien und mit hoher Aktualität aufge-führt.
14 adessoTECHNOLOGIE RADAR 2019/2020
MICROSOFT- PROJEKTE IM RADAR
EVALUIERENÜBERDENKEN EINSETZEN
Azure DevOps Server
BizTalk
Dynamics 365
Dyna-mics 365
Operations and Financial
Microsoft 365
SharePoint
SQL Server
UWP
Azure Service Fabric
Yammer
Windows 10 Mobile
Windows Phone 8
CAMLd3.js
datatables.net jQuery
knockout.js
less
.Net Core
Entity Framework
Core
R Server
ADO.Net
jQuery UI
Kendo UI
PLATT FORMEN
SPRACHEN UND FRAMEWORKS
15
EVALUIEREN ÜBERDENKEN
ASP.NET Web API
EINSETZEN
Azure
MS Data & AI Plat-
form
Azure AD
Azure AD B2C
Azu-re Com-
pute Ser-vices
Azure Datenban-
ken
Azure DevOps
Azu-re Ku-
bernetes Service
Azu-re
Network Ser-
Azure Storage
Azure Web und
Mobile
IIS
iOS
Azure Functions
Agile Pla-nungsmetho-den (KanBan)
CMMI
Con-tinuous
integration (CI)
DevOps und Anwendungsle-benszyklus-Ver-
waltung
Do-main Dri-
ven Design (DDD)
FastTrack
Scrum
Microsoft Solutions
Framework (MSF)
Balsa-miq_ms
Browser Stack
Fiddler Git_ms
HyperV ILSpy
K2 Black Pearl
LINQPadMicrosoft
Flow
MS Build
Nintex Forms
Nintex WorkflowsNuGet
NUnit
Postman / DHC REST
Client
Power BI PowerApps
PowerShell
Sysinter-nals Tools
Terra-form (von HashiCorp)
Visual Studio Code
VMWare
WebCom-piler
WebEssen-tials
Mi-crosoft Teams/Groups
Browserify
InfoPath
.NET Fra-meworkASP.NET
ASPXbootstrap
C#
Entity Fra-mework
LINQ
Microsoft Graph
Mono for Xamarin
MS Bot Framework
Rx
SignalIR
F#
LINQ2SQL
METHODEN UND TECHNIKEN
WERKZEUGE
16 adessoTECHNOLOGIE RADAR 2019/2020
Bei Microsoft-Projekten stellen wir fest, dass Cloud-Plattformen eine zunehmend wichtige Rolle spielen. Zentral ist dabei aber deren Integration in die bestehenden On-Premises-Umgebungen unserer Kunden. Die Microsoft Cloud bietet eine Basis für An-wendungen, die sich aus dezentralisierten Diensten zusammensetzen, egal ob diese On-Premises oder aus der Cloud bereitgestellt werden. Die Microsoft Cloud besteht aus Azure für Infrastructure- und Plat-form-as-a-Service-Diensten. Office 365 ist die Platt-form für den kollaborativen Einsatz. Darüber hinaus steht mit Dynamics 365 eine Umgebung für Business Applications bereit. Unsere Kunden profitieren zu-nehmend davon, dass sich Azure-Dienste wie bei-spielsweise Machine Learning oder Cognitive Services Plattform-unabhängig nutzen lassen.
Business Productivity Collaboration ist die Basis für einen modernen Ar-beitsplatz. Dafür stellt Microsoft diverse einfache und effektive Lösungen bereit. Unsere Kunden setzen hier vermehrt auf Microsoft 365, bei dem kollabora-tive Dienste wie SharePoint, Skype for Business oder Teams um Sicherheitskomponenten wie beispielswei-se Conditional Multi-Factor Access ergänzt werden.
PowerApps und Flow sind inzwischen etablierte Tools, um Services innerhalb von Microsoft 365 zu verknüp-fen. Wir stellen zunehmend fest, dass Microsoft Cog-nitive Services wichtige Elemente für die Workforce Automation eines modernen Arbeitsplatzes darstel-len.
Customer Experience Management (CEM)Die Bereitstellung relevanter, aufbereiteter Informati-onen über den kompletten Customer Lifecycle hinweg ist ein Schlüssel zum Erfolg. Die Dynamics-365-Platt-form bietet dazu unter anderem die Common Data Service und Power Apps. Damit schaffen wir für unse-re Kunden eine durchgängige Verbindung von Infor-mationen, Touchpoints und Prozessen und können zu einem nachhaltigen CEM beitragen.
Business Intelligence, Advanced Analytics und Künstliche Intelligenz (KI)Die Analyse von Informationen und Daten spielt für viele unserer Kunden gerade bei Digitalisierungsvorha-ben, Customer Management, klassischen DWH-The-men und auch im Bereich KI eine wesentliche Rolle. Die Azure-Komponenten der Microsoft-Data-Platt-form unterstützen Big-Data- und Advanced-Analy-tics-Themen und bieten damit eine hochskalierbare Infrastruktur quasi aus der Steckdose. Der Aufwand für den Aufbau und den Betrieb einer eigenen In-house-Big-Data-Plattform ist für unsere Kunden also kein limitierender Faktor mehr.
MICROSOFT-PROJEKTE IM RADAR
17
Microsoft Data & AI Platform • einsetzen > Das maschinelle Lernen nimmt in unseren Projekten einen immer höheren Stellenwert
ein. Mit den Cognitive Services und mit LUIS stehen vortrainierte, intelligente Komponen-ten für die Bearbeitung von Daten, Bildern, Sprache und Text bereit. Das erlaubt eine ein-fache Operationalisierung und Integration in Applikationen und Workflows. Der Microsoft SQL-Server und die dazu verfügbaren BI-Services haben nach wie vor einen festen Platz in unseren BI-Projekten und beweisen mit den aktuellen Versionen ihre Leistungsfähigkeit. Die Verfügbarkeit von Power BI in reinen On-Premises-Szenarien hat die Attraktivität weiter erhöht. In Branchen ohne starke regulatorische Einschränkungen beobachten wir eine zunehmende Nachfrage nach Cloud-Data-Platform-Lösungen mit Komponenten wie Azure SQL Database, Azure Analysis Services sowie den Modern-BI-Ansätzen auf Basis von Azure Data Lake, Azure Databricks und Power BI.
Microsoft Bot Framework • einsetzen > Bei der Erstellung von Bots setzt Microsoft auf ein für Entwickler zugängliches Frame-
work. Für Szenarien wie Bestellprozesse, FAQs oder Ticketsysteme können somit die Ent-wicklungsaufwände erheblich reduziert werden. Die so erstellten Assistenten können in verschiedene Anwendungen integriert werden. Kanäle wie zum Beispiel Teams, Slack oder der Facebook Messenger werden unterstützt – auch mit natürlicher Sprache als Eingabe-medium.
Microsoft 365 • einsetzen > In unseren Projekten erkennen wir den Bedarf, den modernen Arbeitsplatz technologisch
von der Infrastruktur über die Integration von Microsoft Cloud Services bis zur Anwen-dungsentwicklung abzubilden. Microsoft 365 mit Office 365 und Enterprise Mobility und Security bietet die erforderliche technologische Grundlage. Über die Sicherheits- und Compliance-Dienste von Microsoft 365 werden Anwendungen gemäss den Regularien der Unternehmen abgesichert.
Dynamics 365 • einsetzen > In unseren Projekten erkennen wir den Trend, dass der Reifegrad der Kunden im Thema
CRM und CEM steigen soll. Nachdem sich inzwischen klassische CRM-Funktionen etab-liert haben, werden die gewonnenen Daten nun verwendet, um mehr kaufmännischen Nutzen zu generieren. Hierbei stehen die Digitalisierung des Marketings und optimierte Lead-Nurturing-Prozesse im Fokus. Zunehmend soll auch im Bereich der Services weite-res Potenzial gehoben werden. Die Dynamics-365-Plattform hält Lösungsbausteine und Werkzeuge für Low-Code Development bereit, um optimierte Lösungen zu schaffen, die sich einfach in bestehende Architekturen integrieren lassen.
Azure Kubernetes Services (AKS) • einsetzen > Microservices ist das State-of-the-art Architekturmuster für den Aufbau moderner, mo-
dularer Anwendungen. Es setzt darauf, sehr viele kleine Services in einem harmonischen Zusammenspiel arbeiten zu lassen. Kubernetes ist ein Orchestrator, der in solchen Umge-bungen hilft, Komplexität zu vermeiden. Mithilfe des .NET Core verpacken wir unsere Ser-vices in Docker Container, die dann durch Kubernetes orchestriert und betrieben werden. Solche Lösungen können einfach betrieben werden und erfüllen auch alle Anforderungen an DevOps-Paradigmen.
MICROSOFT-PROJEKTE IM RADARSelektierte Einzelbewertungen Aus der Vielzahl der Einträge im Radar für Microsoft-Projekte sind nachfolgend die Elemente aufgeführt, die eine hohe Relevanz für unsere Kunden aufweisen:
18 adessoTECHNOLOGIE RADAR 2019/2020
MOBILE ENTWICKLUNG IM RADAR
EINSETZEN
PLATT FORMEN
SPRACHEN UND FRAMEWORKS
EVALUIERENÜBERDENKEN
Teamcity
BitbucketVisual
Studio Team-service
SAP iOS
Android Auto/Apple
Car
Android TV
Google Home/
HomeKit
XCode Server
Angular
Ionic
Kotlin
PDFKit
SAP UI5
Vuforia (AR)
RxSwift
Swift for Android
GreenDAO
Robolectric
Realm
ReactNa-tive
Qt for Mobile
19
EINSETZEN EVALUIEREN ÜBERDENKEN
Android
METHODEN UND TECHNIKEN
WERKZEUGE
iOS
inMotion
Cordova
Sales-force CRM
(Mobile SDK)
Amazon Alexa
Usability Testing
Optimistic UI
Depen-dency
Injection
Backend as a Ser-
vice
Asset Ge-neration
Viper
End-to-End Testing
Predictive UI
GradleFastlane
Cocoapods
Xcode
An-droid
Studio/ IntelliJ
VisualStu-dio
Saucelabs
SonarQube
Grunt
Gulp
Webpack
SwaggerUI Postman
NuGet
Xray (Jira)
AppCodeTFS/De-
vOps
Carthage
LoRa
Visu-alStudio
online
Microsoft Flow
BlackbeltJavaObjectiveC
Swift
C#
RxAndro-id/RxJava
Appium/ Selenium
Xamarin.Native & Xa-marin.Forms
SQLCipher
TypeScript
Angular.JS
PSPDFKit
Tensor-flow.Lite
Flutter/Dart
20 adessoTECHNOLOGIE RADAR 2019/2020
Die Durchdringung von Mobile Devices im privaten und beruflichen Kontext schreitet immer weiter voran. Eine Mobile-Strategie ist Kernbestandteil der Digita-lisierungsvorhaben, die uns im letzten Jahr begegnet sind. Gerade im Bereich „Digital Workplace“ nimmt die Zahl der Projekte, in denen Mitarbeitende bei ihrer täglichen Arbeit mit mobilen Lösungen unterstützt werden, weiter zu. Im Zuge der wachsenden Bedeu-tung von Mobile für Unternehmen versuchen immer mehr Unternehmen auch intern Prozess- und Archi-tektur-Knowhow für Mobile-Projekte aufzubauen.
Weg von OfflineEine weiterer Trend, den wir in unseren Projekten be-obachten, ist eine Wegentwicklung von der weiterge-henden Offline-Fähigkeit von Applikationen. Aktuelle Apps verfügen zwar über eine stabile Basisfunktiona-lität, ihren eigentlichen Funktionsumfang erreichen sie aber meist nur im Zusammenspiel mit Backends und Cloud-Diensten bei bestehender Online-Verbin-dung, sodass die Offline-Fähigkeit sich meist auf ein Caching der lokalen Daten bis zur nächsten On-line-Verbindung beschränkt. Zusätzlich getrieben wird diese Entwicklung durch Themen wie Machine Learning oder Chatbots, die in den meisten Fällen eine ständige Verbindung zu den jeweiligen Backends benötigen.
Cross-Plattform-LösungenAus technologischer Sicht hat das letzte Jahr ver-gleichsweise wenige disruptive Änderungen gebracht. Auf nativer Seite sind Swift und Kotlin nach wie vor gesetzt und auch im Bereich der Cross-Plattform-Fra-meworks war im letzten Jahr wenig Bewegung zu be-obachten. Als Cross-Plattform-Lösungen setzen wir nach wie vor hauptsächlich auf Cordova/Ionic und Xa-marin (Native & Forms). Je nach Projekt entscheiden wir uns bereits während der Konzeption, welche der genannten Technologien zum Einsatz kommt.
Alternative Cross-Plattform-Lösungen wie React.Na-tive oder Flutter beobachten wir nach wie vor und prü-fen in regelmässigen Abständen einen Einsatz. React.Native bietet gegenüber unserem aktuellen Toolset keine gravierenden Vorteile, die einen Ein- oder Um-stieg attraktiv machen würden. In Flutter sehen wir grosses Potenzial. Jedoch hat das Framework nach einem anfänglichen Pushen durch Google auch im letzten Jahr keinen wirklichen Schub erfahren, sodass abzuwarten bleibt, ob sich Flutter kurzfristig etabliert oder sich in die lange Reihe der von Google beerdigten Projekte einreiht.
MOBILE ENTWICKLUNG IM RADAR
21
CoreML & ARKit • evaluieren > Die nativen ML Frameworks von iOS und Android bieten spannende Möglichkeiten, so-
wohl im Zusammenspiel mit den immer besser werdenden Kameras als auch in Kombina-tion mit individuellen Modellen z. B. auf Tensorflow.Lite Basis.
RxSwift • überdenken > Nachdem es in den letzten beiden Jahren eine Reactive-„Welle“ gab und entsprechende
Frameworks auf allen Plattformen und in allen Sprachen in den Projekten zu finden wa-ren, ebbt die Euphorie bzgl. Reactive gerade im iOS-Bereich ab, da die Frameworks bzw. der Reactive-Ansatz als solches aktuell bei iOS keine spürbaren Probleme löst.
SwaggerUI • einsetzen > Da alle von uns entwickelten Lösungen mit mindestens einem Backend kommunizieren,
ist Swagger.UI inzwischen in jedem Mobilen Projekt im Einsatz. Die Qualität des generier-ten Client Codes ist zwar gerade im iOS-Bereich (noch) nicht immer optimal, die Vorteile von Swagger überwiegen aber trotzdem deutlich, sodass es in zukünftigen Projekten für uns eine gesetzte Technologie ist.
Qt • evaluieren > Auch wenn Qt und C++ sicher keine neuen Technologien sind, ist die Cross-Plattform-Ent-
wicklung mit Qt gerade für Kunden aus dem Bereich Manufacturing Industries eine inte-ressante Variante, da bestehende Maschinen-Interfaces oder Displays häufig auf C++/Qt-Basis entwickelt werden und es hier Synergien geben kann.
Azure DevOps • einsetzen > Auch wenn Azure DevOps auf kurze und vermutlich auch mittelfristige Sicht unsere be-
stehende Toolchain nicht ersetzen wird, setzen wir es verstärkt für Kunden ein, die eine eigene Build-/Toolchain aufbauen möchten bzw. eine exklusive Instanz für ihr Projekt haben möchten. Daneben kommt DevOps bei unseren Xamarin-Projekten zum Einsatz. Einer der grossen Vorteile ist dabei die komfortable Verknüpfung von Tickets, Builds, Re-lease etc.
MOBILE ENTWICKLUNG IM RADAR
Selektierte Einzelbewertungen Besonderes Augenmerk im Rahmen unserer Radar-Bewertungen setzen wir auf diese Ele-mente:
22 adessoTECHNOLOGIE RADAR 2019/2020
FOKUS-RADAR: JAVA TOOLCHAIN
EINSETZEN
Jenkins
VMware ESX Server
GoCD
EVALUIERENÜBERDENKEN
Bamboo
Failsafe
PLATT FORMEN
SPRACHEN UND FRAMEWORKS
23
EINSETZEN EVALUIEREN ÜBERDENKEN
Docker
Elastic Stack als Log-Platt-
form
Gitlab
Graylog 2Nexus
Auto-matisierte End-to-end
Tests
Conti-nuous
Delivery
Continu-ous Integ-
ration
Ansible
Balsamiq
BitbucketChef
Eclipse
Gradle
Intellij IDEA / Webstorm
JIRAJMeter
jQAssis-tant
Maven
OWASP Dependendy
Check
Postman
Puppet
Rest-assu-red
Sonarqube
SpiraTest
Swagger
Vagrant
Structure 101
Gatling
Java Mission Control
logFaces
Test-Ma-nager/
Lab-Mana-ger
UpSource
YouTrack
Java Me-lody
METHODEN UND TECHNIKEN
WERKZEUGE
24 adessoTECHNOLOGIE RADAR 2019/2020
Java als technologische Plattform hat zweifelsfrei seit vielen Jahren die Reife für den breiten und vielfältigen Einsatz in Unternehmen. Gleichzeitig verändert sich das Ökosystem jedoch immer wieder grundlegend, da Innovationen insbesondere im methodischen Quad-ranten zu veränderten Entwicklungsprozessen füh-ren. Diese stellen neue Anforderungen an die Werk-zeuge und Plattformen.
Social CodingEin Beispiel für diese Veränderungen sind Soci-al Coding Practices, die über den Einsatz in Open—Source-Projekten auf GitHub, GitLab und Co. hinaus heute auch sinnvoll in unseren Kundenprojekten ein-gesetzt werden. Für den Einsatz in Kundenprojekten werden, teilweise von den Open-Source-Plattformen selbst, passende Pakete ihrer Plattformen bereitge-stellt, die so z. B. On-Premise oder mit entsprechen-den Integrationen und Funktionen für den Einsatz in Unternehmen ausgestattet sind.
Die Leader in diesem Segment sind GitLab und Atlas-sian Bitbucket, wobei beide Systeme unterschiedliche Philosophien verfolgen. Während GitLab sich als voll-integrierten Stack innerhalb eines geschlossenen Öko-systems sieht und den gesamten Projektprozess vom Requirements Engineering über Code-Verwaltung und -Build bis zur containerbasierten Auslieferung abbil-den will, ist Bitbucket eher als Baustein im Kontext des gesamten Atlassian-Stacks gedacht. Dieser er-weitert Git als Configuration Management-Werkzeug um Komponenten der Zusammenarbeit, überlässt aber die anderen Bestandteile des Prozesses etablier-ten Tools wie Jira, Confluence oder Bamboo.
Mehr Cloud-artige StrukturenEin Trend, der ebenfalls aus der Open-Source-Welt in die Unternehmenswelt „schwappt“, ist ungebrochen der Trend zu „cloud-artigen“ Strukturen. Auf der Welle der Container-Nutzung sind Themen wie Cloud-native heute in Unternehmen präsent. Kubernetes-basierte Plattformen werden von immer mehr Unternehmen eingesetzt und verändern die Art und Weise wie Soft-ware entwickelt wird, wie Software-Delivery-Prozes-se gestaltet sind, wie Software betrieben wird. Be-sonders interessant ist hier auch die Wechselwirkung zwischen den Features der modernen Betriebsplatt-formen und den Softwarearchitekturen, die beispiel-weise für Aufgaben, die bisher als Teil der Software-entwicklung „eingebaut“ wurden, nun durch Services der Betriebsplattformen abgebildet werden können.
Konzepte wie Side-Cars mit Istio oder Service-Regis-tries einer Kubernetes-Plattform sind Beispiele dafür. Im Projekt ergeben sich hierdurch zahlreiche neue Herausforderungen, die einerseits den Softwareent-wicklungsprozess selbst betreffen, andererseits den Betrieb dieser Stacks umfassen. Ersteres ist in vielen Projekten mittels Prozess-Frameworks wie Git Flow bereits gelebte Realität, benötigt aber auch eine Anlaufphase. Letzteres zieht tiefgreifende Verände-rungen nach sich, weil das erforderliche Know-How im Projektteam um Themen wie Software Defined Networking, Kapazitätsplanung, Überwachung und Orchestrierung sowie Lifecycle ergänzt werden und mit entsprechenden Werkzeugen (Ansible, Kuber-netes usw.) unterfüttert werden muss. Zudem ent-stehen hierdurch neue Herausforderungen für den klassischen IT-Betrieb, weil die Projekte wesentliche Teile der Betriebsverantwortung übernehmen – hier-für muss die IT an der Schnittstelle zu den Projekten entsprechend aufgestellt sein, um dieser technisch wie organisatorisch anspruchsvollen Anforderung ge-recht werden zu können.
FOKUS-RADAR: JAVA TOOLCHAIN
25
Nexus • einsetzen > Nexus wird im Rahmen der adesso-Continuous-Integration-Infrastruktur zur Ablage von
Artefakten bereitgestellt und wird in vielen adesso-Projekten erfolgreich eingesetzt.
Chef, Puppet, Ansible • einsetzen > Chef oder alternativ Puppet/Ansible sind Systemkonfigurationswerkzeuge für die Pro-
visionierung von hauptsächlich Unix-basierten Systemen. Speziell im Rahmen von Pro-jekten mit DevOps-Anteilen sind sie interessante Kandidaten. Sie sind verbreitete und notwendige Lösungen, die sich längst etabliert und in Projekten bewährt haben.
Bamboo • überdenken > Eine einfache Möglichkeit, Continuous Integration trotz schwieriger Ausgangslage und
Infrastruktur einzusetzen. Allerdings hat Bamboo keinen Support für Pipeline as Code.
Bitbucket • einsetzen > Das Tool ermöglicht professionelle Softwareentwicklung mit oder ohne Branching-Mo-
delle. Durch Social Coding Features ist eine intensive und professionelle Auseinanderset-zung mit dem Code im Team möglich.
Gitlab • einsetzen > Gitlab ist als Alternative zum Atlassian Stack zu bewerten. Viele unserer Projekte bevor-
zugen Gitlab insbesondere gegenüber der Kombination aus Bitbucket, Bamboo und Co. wegen der tiefen Integration und der Unterstützung von Pipeline as Code.
Selektierte Einzelbewertungen Aus den Einträgen im Radar für Java Toolchain möchten wir die Bewertung der folgenden Elemente hervorheben:
26 adessoTECHNOLOGIE RADAR 2019/2020
Die adesso-Softwarearchitekten:
27
Das Technologie-Radar wird fortlaufend von den adesso-Experten evaluiert und erweitert. Die Print-Ausgabe erscheint einmal jährlich.
In der Zwischenzeit wenden Sie sich für Fragen, Hinweise oder Aktualisierungen gerne an: info@adesso.ch
28 adessoTECHNOLOGIE RADAR 2019
adesso Schweiz AGVulkanstrasse 1068048 ZürichT +41 58 520 98 00
info@adesso.chwww.adesso.ch