10 Softwareentwicklungsvorhersagen für 2018

Siddhartha Agarwal ist Vice President für Produktmanagement und Strategie bei Oracle Cloud Platform. 

Entwickler sollten vor Aufregung über die bevorstehenden Chancen im Jahr 2018 brennen, da Produkte und Tools rund um Technologien wie Blockchain, Chatbots, Funktionen ohne Server und maschinelles Lernen für Projekte in der Praxis ausgereift genug werden. Gleichzeitig werden viele Entwickler besorgt sein, dem Druck standzuhalten, Code und Funktionalität schneller bereitzustellen, ohne die Sicherheit oder Leistung zu beeinträchtigen. Aber auch in dieser Hinsicht gibt es gute Nachrichten.

Für Entwickler wird 2018 durch diese Spannung zwischen dem Ergreifen transformativer neuer Möglichkeiten und dem Umgang mit dem Druck, mehr zu tun, mit höherer Qualität definiert. Nachstehend sind 10 Vorhersagen aufgeführt, die sich darauf beziehen, wie sich diese Kräfte im kommenden Jahr entwickeln werden.

1. B2B-Transaktionen, die Blockchain nutzen, werden in Produktion genommen

Unternehmen haben begonnen, die Sicherheit, Zuverlässigkeit und Effizienz zu verstehen, die durch Blockchain-fähige Transaktionen erzielt werden können. Entwickler werden im kommenden Jahr viele Blockchain-Anwendungsfälle für Finanzdienstleistungen und Fertigungslieferketten implementieren. Blockchain ist eine Technologie, die effiziente, sichere, unveränderliche und vertrauenswürdige Transaktionen zwischen Organisationen ermöglicht, die sich möglicherweise nicht vollständig vertrauen, wodurch Vermittler eliminiert werden.

Stellen Sie sich ein Unternehmen vor, das Produkte von einem Offshore-Hersteller bestellt. Diese Produkte werden über eine Reederei versandt, kommen über den Zoll, über eine andere Reederei und schließlich zum Käufer. Heutzutage erfolgt die Überprüfung und Abstimmung der einzelnen Schritte hauptsächlich über E-Mails und Tabellenkalkulationen, an denen viele Personen und Prozesse beteiligt sind. Blockchain eliminiert manuelle Prozesse und Abstimmungen, indem Aktualisierungen unwiderruflich im Blockchain-Ledger aufgezeichnet werden, wenn eine Mindestanzahl von Parteien sagt: "Ja, dieser Teil der Transaktion ist passiert."

Blockchain-Cloud-Services bieten Skalierbarkeit, Ausfallsicherheit, Sicherheit und vorgefertigte Integrationen in Unternehmenssysteme. Dadurch können sich Entwickler leichter auf den Geschäftsanwendungsfall konzentrieren als auf die zugrunde liegende Implementierung der Hyperledger-Fabric.

2. Chatbots führen routinemäßig echte Gespräche mit Kunden und Mitarbeitern

Die Leute werden es leid, mehrere mobile Apps zu benötigen, um den gleichen Job zu erledigen - wie drei verschiedene Fluglinien-Apps mit unterschiedlichen Möglichkeiten zum Einchecken und Erhalten einer Bordkarte. Eine bessere Möglichkeit besteht darin, dieselbe Funktionalität bereitzustellen, jedoch über die beliebteste App auf Ihrem Telefon - Messaging. Messaging verfügt über drei attraktive Elemente, die im gesamten Medium konsistent sind: Sofort, Ausdruck und Konversation - keine Schulung erforderlich. Dank der Fortschritte bei der künstlichen Intelligenz und der Verarbeitung natürlicher Sprache können Benutzer Facebook Messenger, Slack, WeChat, WhatsApp oder einen Sprachassistenten wie Amazon Alexa oder Google Home verwenden, um Fragen zu stellen und Antworten von intelligenten Bots zu erhalten.

Entwickler, die neue intelligente Cloud-Dienste zum Erstellen von Bots verwenden, können schnell Bots erstellen, die die Absicht des Kunden verstehen, den Konversationsstatus beibehalten und intelligent reagieren, während die Integration in Back-End-Systeme vereinfacht wird. Stellen Sie sich vor, Sie machen ein Foto von einem Kleid, das Sie in einem Film gesehen haben, und senden das Bild an den Bot Ihres Lieblingsbekleidungsgeschäfts, der mithilfe von Bilderkennung und KI ähnliche Kleider empfiehlt. Mitarbeiter können auch große Vorteile von Bots für Aufgaben haben, z. B. die Frage, wie viele Urlaubstage sie noch haben, das Einreichen eines Helpdesk-Tickets oder die Bestellung eines Ersatz-Laptops, bei dem das System sogar weiß, für welche Laptops der Mitarbeiter berechtigt ist, und Statusaktualisierungen bereitstellen kann auf ihre Bestellung. Angesichts der Tatsache, dass es viel verzeihender ist, mit Ihrem eigenen Mitarbeiterstamm zu experimentieren,Entwickler könnten zuerst ihre Bot-Building-Chops nutzen, um Bots für Mitarbeiter zu erstellen und zu testen.

3. Die Schaltfläche verschwindet: AI wird zur App-Oberfläche

KI wird zur Benutzeroberfläche, was bedeutet, dass das synchrone Anforderungs-Antwort-Modell für die Verwendung von Apps und Diensten allmählich verschwindet. Smartphones haben immer noch einen „niedrigen IQ“, da Sie sie abholen, eine Anwendung starten, nach etwas fragen müssen, um etwas zu tun, und schließlich eine Antwort erhalten müssen. In einer neuen Generation intelligenter Apps initiiert die App Interaktionen über Push-Benachrichtigungen. Gehen wir noch einen Schritt weiter, wo eine App, ein Bot oder ein virtueller persönlicher Assistent mit künstlicher Intelligenz weiß, was wann, warum, wo und wie zu tun ist. Und mach es einfach. Zwei Beispiele:

  • Die App für Kostengenehmigungen überwacht Ihr Muster für die Genehmigung von Spesenabrechnungen, beginnt mit der automatischen Genehmigung von 99 Prozent der Spesenabrechnungen und macht Sie nur auf den seltenen Bericht aufmerksam, der Ihre Aufmerksamkeit erfordert.
  • Die Analytics-App versteht die zugrunde liegenden Daten, Fragen, die bisher vom Geschäftsbenutzer gestellt wurden, Fragen, die von anderen Benutzern im Unternehmen an denselben Datensatz gestellt wurden, und bietet jeden Tag neue Erkenntnisse, an die der Analyst möglicherweise nicht gedacht hat. Wenn Organisationen mehr Daten sammeln, kann AI uns helfen, herauszufinden, welche Fragen an die Daten zu stellen sind.

Entwickler müssen herausfinden, welche Daten für ihre Geschäftsanwendung wirklich wichtig sind, wie sie Transaktionen beobachten und daraus lernen können, welche Geschäftsentscheidungen von dieser Art von proaktiver KI am meisten profitieren würden, und mit dem Experimentieren beginnen. Embedded AI kann vorhersagen, was Sie benötigen, Informationen und Funktionen zum richtigen Zeitpunkt über das richtige Medium bereitstellen, auch bevor Sie es benötigen, und viele Aufgaben automatisieren, die Sie heute manuell ausführen.

4. Maschinelles Lernen wird praktisch und domänenspezifisch eingesetzt

Maschinelles Lernen verlagert sich vom Bereich der obskuren Datenwissenschaft in die Mainstream-Anwendungsentwicklung, sowohl aufgrund der sofortigen Verfügbarkeit vorgefertigter Module auf gängigen Plattformen als auch, weil es bei der Analyse großer historischer Datensätze so nützlich ist. Beim maschinellen Lernen kommt der wertvollste Einblick in den Kontext - was Sie zuvor getan haben, welche Fragen Sie gestellt haben, was andere Leute tun, was normal oder anomal ist.

Um jedoch effektiv zu sein, muss maschinelles Lernen in einer domänenspezifischen Umgebung optimiert und trainiert werden, die sowohl die zu analysierenden Datensätze als auch die zu beantwortenden Fragen enthält. Beispielsweise unterscheiden sich Anwendungen für maschinelles Lernen, mit denen ein anomales Benutzerverhalten für einen Sicherheitsanalysten ermittelt werden soll, stark von Anwendungen für maschinelles Lernen, mit denen der Betrieb von Fabrikrobotern optimiert werden soll. Diese Anwendungen unterscheiden sich möglicherweise erheblich von Anwendungen, die für die Abhängigkeitszuordnung einer auf Mikrodiensten basierenden Anwendung entwickelt wurden.

Entwickler müssen sich mit domänenspezifischen Anwendungsfällen besser auskennen, um zu verstehen, welche Daten erfasst werden müssen, welche Arten von Algorithmen für maschinelles Lernen angewendet werden müssen und welche Fragen zu stellen sind. Entwickler müssen auch bewerten, ob domänenspezifische SaaS- oder Paketanwendungen für ein bestimmtes Projekt gut geeignet sind, da große Mengen an Trainingsdaten erforderlich sind.   

Mithilfe von maschinellem Lernen können Entwickler intelligente Anwendungen erstellen, um Empfehlungen zu generieren, Ergebnisse vorherzusagen oder automatisierte Entscheidungen zu treffen. 

5. DevOps bewegt sich in Richtung NoOps

Wir sind uns alle einig, dass Entwickler von entscheidender Bedeutung sind, um Entwicklern dabei zu helfen, schnell neue Anwendungen und Funktionen zu erstellen und gleichzeitig ein hohes Maß an Qualität und Leistung aufrechtzuerhalten. Das Problem bei Entwicklern besteht darin, dass Entwickler 60 Prozent ihrer Zeit auf der Operationsseite der Gleichung verbringen müssen, wodurch die für die Entwicklung aufgewendete Zeit verkürzt wird. Entwickler müssen verschiedene CICD-Tools (Continuous Integration and Continuous Delivery) integrieren, diese Integrationen beibehalten und die CI / CD-Toolkette ständig aktualisieren, wenn neue Technologien veröffentlicht werden. Jeder macht CI, aber nicht zu viele Leute machen CD. Entwickler werden auf Cloud-Diensten bestehen, um das Pendel 2018 wieder auf die Entwicklerseite zu bringen. Dies erfordert mehr Automatisierung für echte CICD.

Docker bietet Ihnen Verpackung, Portabilität und die Möglichkeit, agile Bereitstellungen durchzuführen. Sie benötigen eine CD, um Teil dieses Docker-Lebenszyklus zu sein. Wenn Sie beispielsweise Container verwenden, sollte das standardmäßig erstellte Artefakt ein Docker-Image mit der neuen Version des Codes sein, sobald Sie eine Codeänderung an Git festschreiben. Außerdem sollte das Image automatisch in eine Docker-Registrierung verschoben und ein Container aus dem Image in einer Dev-Test-Umgebung bereitgestellt werden. Nach dem Testen der Qualitätssicherung und der Bereitstellung in der Produktion sollten Orchestrierung, Sicherheit und Skalierung der Container für Sie erledigt werden. Führungskräfte üben Druck auf Entwickler aus, um neue Innovationen schneller bereitzustellen. Das Devops-Modell muss den Entwicklern mehr Zeit geben, um dies zu ermöglichen.

6. Open Source als Service beschleunigt den Verbrauch von Open Source-Innovationen 

Das Open-Source-Modell bleibt einer der besten Innovationsmotoren, aber die Implementierung und Aufrechterhaltung dieser Innovation ist oft zu komplex. Zum Beispiel:

  • Sie möchten eine Plattform für die Verwaltung von Streaming-Daten / Ereignissen und wenden sich an Kafka. Wenn Sie Kafka in größerem Maßstab nutzen, müssen Sie zusätzliche Kafka-Knoten einrichten und große Kafka-Cluster ausgleichen, diese Cluster aktualisieren, sobald neue Versionen von Kafka herauskommen, und diesen Service dann in den Rest Ihrer Umgebung integrieren.
  • Sie möchten Kubernetes für die Container-Orchestrierung. Anstatt sich um Upgrades, Backups, Wiederherstellungen und Patches für Ihren Kubernetes-Cluster zu kümmern, sollte die Plattform all dies für Sie erledigen. Kubernetes wird alle sechs Wochen ausgeliefert, daher sollte die Plattform rollierende Bereitstellungen und Selbstheilung aufweisen.
  • Sie möchten Cassandra für NoSQL-Datenbanken. Sie sollten möchten, dass die Sicherung (inkrementell oder nach Zeitplan vollständig), das Patchen, Clustering, Skalieren und die hohe Verfügbarkeit des Cassandra-Clusters von der Plattform verwaltet werden.

Entwickler werden zunehmend nach Cloud-Diensten suchen, um all diese Hochgeschwindigkeitsinnovationen aus Open Source bereitzustellen und gleichzeitig die Betriebs- und Managementaspekte dieser Technologien zu berücksichtigen.

7. Serverlose Architekturen werden in der Produktion groß geschrieben

Der Reiz serverloser Architekturen liegt auf der Hand: Wenn mein Code basierend auf einem bestimmten Ereignis ausgeführt werden muss, wird die Infrastruktur instanziiert, mein Code wird bereitgestellt und ausgeführt, und mir wird nur die Zeit in Rechnung gestellt, in der mein Code ausgeführt wird. Angenommen, Sie möchten eine Reisebuchungsfunktion zum Buchen / Stornieren von Flügen, Hotels und Mietwagen erstellen. Jede dieser Aktionen kann als serverlose Funktion erstellt werden, die in verschiedenen Sprachen wie Java, Ruby, JavaScript und Python geschrieben ist. Es wird kein Anwendungsserver mit meinem Code ausgeführt. Vielmehr werden die Funktionen nur bei Bedarf in der Infrastruktur instanziiert und ausgeführt.

Für Entwickler stellt das Aneinanderreihen von Funktionen ohne Server zur Ausführung komplexer Transaktionen neue Herausforderungen dar: Beschreiben, wie diese Funktionen miteinander verkettet werden sollten, Debuggen verteilter Transaktionen und Bestimmen, wie bei Ausfall einer Funktion in einer Kette Ausgleichstransaktionen erstellt werden, um unangemessene Änderungen abzubrechen. Suchen Sie nach Cloud-Diensten und Open Source-Tools wie dem FN-Projekt, um Entwicklern zu helfen, die Programmierung, Komposition, das Debugging und das Lebenszyklusmanagement von Funktionen ohne Server einfach zu verwalten und sie auf einem Laptop oder einem lokalen Server bereitzustellen und zu testen oder irgendeine Wolke. Der Schlüssel wird die Auswahl einer serverlosen Plattform sein, die maximale Portabilität bietet.

8. Die einzige Frage zu Containern lautet „Warum nicht?“.

Container werden zum Standard für Entwicklungs- / Testarbeiten und zum Standard für Produktionsanwendungen. Erwarten Sie kontinuierliche Verbesserungen in Bezug auf Sicherheit, Verwaltbarkeit, Orchestrierung, Überwachung und Debugging, die auf Open Source-Innovationen und Industriestandards beruhen. Container bilden die Bausteine ​​für viele der Trends, die die moderne Entwicklung vorantreiben, darunter Microservices-Architekturen, Cloud-native Apps, serverlose Funktionen und Entwickler.

Container sind nicht überall sinnvoll - zum Beispiel, wenn Sie eine genauere Cloud-Plattform wie ein Integrations-PaaS oder ein mobiles PaaS benötigen -, aber diese übergeordneten Cloud-Dienste werden selbst auf Containern ausgeführt und sind die Ausnahmen, die dies belegen Regel.

Darüber hinaus müssen Softwarelizenzierungsmodelle für hochwertige, kommerzielle lokale Software die Verbreitung von Containern berücksichtigen. Preismodelle für Software müssen die Lizenzierung zum Ein- und Ausschalten unterstützen, da Container instanziiert, vergrößert und verkleinert werden.

9. Software und Systeme werden selbstheilend, selbstoptimierend und selbstverwaltend

Entwickler und Produktionsbetriebsteams ertrinken in Daten aus Protokollen, der Überwachung der Web- / App- / Datenbankleistung und der Überwachung der Benutzererfahrung sowie der Konfiguration. Darüber hinaus sind diese verschiedenen Datentypen isoliert, sodass Sie viele Personen in einen Raum bringen müssen, um Probleme zu beheben. Dann gibt es das Problem des Wissenstransfers: Entwickler verbringen viel Zeit damit, die Produktionsabläufe über die Vor- und Nachteile ihrer Anwendungen zu informieren, welche Schwellenwerte festgelegt werden müssen, welche Servertopologien für eine Transaktion überwacht werden müssen usw.