Digitales Marketing mit odoo.

odoo bietet viele Tools für das digitale Marketing, so wie Marketing-Automation, E-Mail- und SMS-Marketing, Chatbot sowie eine voll integrierte Webseite für das Lead-Management und personalisierte Inhalte. 


Wir beraten Sie gerne.
St.Gallen, 26. Oktober 2015
Sehr geehrter Herr Niederer
Wir danken Ihnen für Ihre Anfrage betreffend Projekt Gossau. Gerne bestätige ich Ihnen den Auftrag SO205 mit dem PDF in der Anlage. Wir freuen uns auf die Zusammenarbeit mit Ihnen und auf die Umsetzung dieses interessanten Projektes.
Herzliche Grüsse
Bruno Giordano
bruno.giordano@giordano.ch
Telefon +41 71 221 00 50

Digital-Marketing und  Omnichannel-Marketing

 

Digital Marketing ist kein neues Wort mehr im Marketing. Doch, was unterscheidet Digital Marketing von Online Marketing? Vielleicht ist die Antwort etwas spitzfindig – aber technologisch erklärbar: denn Digital Marketing nutz sowohl online als auch offline Kanäle. Online Marketing funktioniert nur, wenn es eine aktive Internetverbindung gibt. Unter Digital Marketing fallen demnach auch Email Marketing, Games, E-Books oder Apps, die keine Internetverbindung benötigen.

 

Gerade so gesehen, wird mit dem Begriff digitales Marketing ein Paradigma angesprochen. In unseren Köpfen haben wir viele verschiedene Applikationen mit teilweise ähnlichen Funktionen und unterschiedlichen Schwerpunkten oder Ausrichtungen. Software-Applikationen, welche teilweise die gleichen Daten oder gleichartige Daten in unterschiedlicher Struktur enthalten. Damit die Herausforderungen des digitalen Marketings lösen zu wollen stösst an Grenzen.

 

Dem Begriff Digital Marketing gegenüber hat sich der Begriff Omnichannel Marketing entwickelt. Was bedeutet Omnichannel Marketing und welche Auswirkungen hat diese Entwicklung auf das Marketing und das Unternehmen als Ganzes? Denn mit Omnichannel Marketing sind sämtliche Unternehmensmedien gemeint und angesprochen werden sämtliche Anspruchsgruppen des gesamten Unternehmens, also nicht nur Interessenten und Kunden sondern auch Partner, Mitarbeitende, Lieferanten, Stakeholder und weitere.

 

Omnichannel Marketing bedeutet, dass über alle Kanäle hinweg Informationen zum Unternehmen, zu Produkten, zu Dienstleistungen verfügbar sind und zwar in gleichbleibender Qualität. Auch die kundenspezifischen Informationen sind in allen Kanälen konsistent, sei es in iOS oder Android Apps, im CRM, auf einer Webseite, in einem Blog, im ERP usw.

 

Diese Durchgängigkeit ermöglicht es dann, kanalübergreifende Geschäfts- und Verhaltens-Regeln zu realisieren. Ein wichtiger Faktor für Prognosen, basierend auf der Erkennung von Verhaltensmustern in diversen digitalen Marketing-Kanälen (Flood of Sensor Data-Analysen) ist. Omnichannel Marketing bringt aber nicht nur für das Unternehmen selbst Vorteile, es sorgt auch für ein kanalübergreifendes Kundenerlebnis und eine Multichannnel-Markenführung mit personalisierten Inhalten für Interessenten und Kunden.

 

Das Omnichannel Marketing ist im Zuge der digitalen Transformation ist für viele Unternehmen ein wichtiges Thema geworden. Die eigene Website, mobile Anwendungen und andere Unternehmensmedien wollen gleichzeitig mit Content bedient werden. Inhaltlich und technologisch stellt das viele Unternehmen vor neue Herausforderungen. Es brauch neue Lösungsansätze, die sich von der klassischen Applikationsentwicklung unterscheiden.

 

Omnichannel Marketing betrifft nicht nur die klassischen Marketing- und Werbemassnahmen sondern sämtliche Unternehmensmedien. Mit einem durchgängigen Omnichannel Marketing gehen keine Informationen mehr verloren und Interessenten, Kunden, Partner, Angestellte, Lieferanten – also das gesamte Universum Ihrer Anspruchsgruppen wird einheitlich und umfassend mit Informationen bedient.

  • Erstellen Sie hochwertige Multi-Channel Anwendungen für iOS und Android Apps mit JavaScript aus einer serverlosen Cloud-Plattform
  • Transformieren Sie Interessenten zu Kunden mit Hilfe von personalisierten Inhalten in Multi-Channel Anwendungen
  • Kreieren Sie innovative Oberflächen und überzeugen Sie Ihre Zielgruppen mit einem durchgehenden Auftritt über alle Ihre digitalen Kanäle hinweg.
  • Generieren Sie Prognosen basierend auf der Erkennung von Verhaltensmustern in ihren digitalen Marketing-Kanälen (Flood of Sensor Data-Analysen).
  • Wandeln Sie Kundenerlebnisse in profitable Entscheidungen mit Hilfe von kanalübergreifenden Geschäfts- und Verhaltens-Regeln (ausserhalb einer Applikation).
  • Integrieren Sie die neuen Möglichkeiten des digitalen Marketings in alle Ihre Geschäftsbereiche und in alle Ihre Geschäftsfelder.

 


 

 

Weitere Informationen zu Produkten finden Sie hier:

(Links)
Progress Sitefinity CMS          das Enterprise CMS System
Digital Experience Cloud         DEC für die Personalisierung von Webinhalten
odoo ERP                              Webseite für digitales Marketing, inklusive e-Shop
Squidex – Headless                schnell implementiert, extrem flexibel und performant
GraphQL:                              mehr über GraphQL API auf unserer Produktseite
Node.js                                 Webanwendungen mit node.js

 

Applikationen

Unter dem Begriff „Digitales Marketing“ versteht man heute meist das Zusammenspiel von verschiedenen Anwendungen. Rund um das Thema digitales Marketing gibt es Applikationen wie:

- CMS                         Content Management Systeme
- CRM                         Customer Relationship Management
- Apps                         native Apps, iOS, Android
- PIM                          Product Information Management
- MAM                         Media Asset Management
- Shop                        e-Commerce Systeme
- ERP                          Enterprise Ressource Planning System
- Kundendienst            Ein Ticketing-System
- BI Tools                    Business Intelligence Anwendungen

 

Bei Software-Applikationen gibt es einerseits die Entwicklung des „Best in Case“, also Applikationen, die sich auf gewisse Anwendungen spezialisieren. Andererseits aber auch die Entwicklung hin zu generischen Anwendungen, die eine breite, aber nicht sehr tiefe Anwendungsvielfalt bieten. Im Einzelfall mag die eine oder andere Variante die Anforderungen für eine bestimmte Nutzung erfüllen.

 

Im Kontext mit dem Begriff des digitalen Marketings scheinen aber die Probleme im Zusammenspiel von unterschiedlichen Applikationen und im Abgleich von Daten gross zu sein, wenn nicht künftig sogar unüberwindbar.

 

Weshalb? Die Applikationsentwicklung basiert auf den folgenden Komponenten:
- Datenbank mit unterschiedlichen Modellen und Tabellen
- Methoden und Bibliotheken mit Funktionen
- Programmierung von Anwendungen auf Basis relationaler Datenabfragen
- Darstellung der Daten im GUI (grafische Benutzeroberfläche)
Dies entspricht einem geschlossenen Kreislauf von Dateneingabe und Datenausgabe. Zudem können Reports häufig nur in einzelnen Datenbankmodellen realisiert werden. Schon modellübergeifende Statistiken müssen auch innerhalb einer Applikation über eine interne API gelöst werden (ähnlich wie zwischen zwei voneinander getrennten Applikationen).

Einfach gesagt: mittels Programmierung werden Daten aus der Datenbank und aus verschiedenen Modellen für bestimmte Funktionen aufbereitet und zur Verwendung der Darstellung im GUI zur Verfügung gestellt.

 

Gerade vom Marketing sind nun verschiedene Anwendungen betroffen, wie die Liste der Applikationen oben zeigt. Will man Daten aus unterschiedlichen Applikationen zusammenführen oder einem Benutzer im gleichen GUI anzeigen, dann kann dies nur über Schnittstellen gelöst werden.

 

Ein Beispiel – vom Interessenten zum Kunden

 

CMS (Content Management Systeme)
Der Interessent sucht Informationen im Internet und landet auf der Webseite des Unternehmens. Er sieht sich diverse Seiten zu einem Produkt an.

CRM (Customer Relationship Management)
Im CRM des Unternehmens ist dieser Interessent bereits durch einen Telefonkontakt eines Verkäufers erfasst worden. Zu diesem Zeitpunkt war jedoch ein anderes Produkt im Fokus. Der Verkäufe hat Name und Vorname sowie E-Mail und Telefonnummer erfasst sowie den Inhalt des Gesprächs.

Shop (e-Commerce Systeme)
Der Interessent wird auf den Shop aufmerksam und bestellt das Produkt, welches er auf der Webseite gesehen hat. Leider erinnert er sich nicht mehr an das Verkaufsgespräch mit dem Verkäufer, der ihm gesagt hat, dass für seine Anwendung ein anderes Produkt besser geeignet ist. Daher bestellt der Interessent nun ein falsches Produkt. Durch seine Bestellung wird er im ERP System als Kunde angelegt.

ERP (Enterprise Ressource Planning System)
Im ERP gibt es einen neuen Kunden und dazu eine Bestellung. Die Lieferung wird ausgeführt. Das ERP erkennt nicht, dass ein anderes Produkt geeigneter gewesen wäre. Diese Informationen sind im PIM abgelegt.

PIM (Product Information Management)
Das PIM kennt die Informationen und Anwendungsbereiche beider Produkte. Des einen, das der Verkäufer empfohlen hat und dasjenige, welches der Kunde im Shop bestellt hat.

Kundendienst (Ein Ticketing-System)

Der Neukunde beschwert sich beim Kundendienst, dass er das gekaufte Produkt nicht gebrauchen kann. Der Kundendienst nimmt das auf und macht eine Retoure und liefert das richtige Produkt aus. Leider ist der Kundendienst nicht mit dem CRM verknüpft.

CRM (Customer Relationship Management)
Deshalb ruft der Verkäufer beim Kunden an du fragt nach, ob der Interessent immer noch an seiner Produktempfehlung interessiert ist.

So ist vielleicht digitales – aber definitiv kein erfolgreiches Marketing.


2019-12-20-Cloud Computing

Applikationsentwicklung

Mit einer Applikationsentwicklung werden zugleich Vorteile und Nachteile erschaffen. Je nach Anwendung überwiegen die Vorteile, nämlich dann wenn die Applikation für sich alleine steht und die Daten nicht in anderen Anwendungen zur Verfügung gestellt werden sollen. So können sehr individuelle Anforderungen erfüllt werden. Je spezifische solche Workflows jedoch sind, um so schwieriger ist es, die gespeicherten Daten in Verbindung mit anderen Workflows oder anderen Applikationen zu nutzen. Warum? Weil die Daten im System, der Software nur dann genutzt werden können, wenn Sie über die eigentliche Programmierung der Funktionen zur Nutzung zur Verfügung gestellt werden. Und dies immer im Kontext der Funktion selbst.

Will man neue Wege gehen, müssen drei Faktoren grundsätzlich getrennt werden:

- Datenhaltung
- Funktion
- Visualisierung

Dabei gibt es mehrere Lösungsansätze.

 

Microservices

Was sind Microservices?

Komplexe Applikationen sind letztlich eine Ansammlung von einzelnen Funktionen. Betrachtet man diese Funktionen als kleine oder kleinste Bausteine, dann wird es möglich, solche Funktionen von unterschiedlichen Applikationen im Zusammenspiel zu nutzen. Diese Aufgabe übernehmen Microservices.

Microservices ermöglichen, dass Applikationen beziehungsweise deren Funktionen in einzelne, miteinander kommunizierende Dienste aufgeteilt werden. Dies ermöglicht eine applikationsübergreifende Nutzung und Bearbeitung von Daten bei komplexen Softwareanwendungen.

Bereits in den 1990-er Jahren wurden die ersten service-orientierten Architekturen entwickelt. Das waren die Vorläufer von Microservices im heutigen Verständnis, also der sogenannten Container-Technologien. Weshalb erhält dieses Thema heute so viel Bedeutung?

Man unterscheidet zwischen monolithisch aufgebauten Applikationen und Webanwendungen. Webbasierte Lösungen zeichnen sich durch eine hohe Skalierbarkeit aus. Softwarearchitektur, Funktionsumfang, Nutzungs- und Bereitstellungsmodelle bieten bei Webanwendungen eine ausgeprägte Elastizität – sind dadurch offener und weniger starr als monolithisch programmierte Anwendungen. Webanwendungen können als „native“ Cloud-Systeme bezeichnet werden. Service-orientierte Strukturen (SOA) unterstützen die Flexibilität von Webanwendungen optimal. Und dank moderner Microservices können die service-orientierte Strukturen noch wesentlich verfeinert werden. Das bedeutet, es können kleinere Dateneinheiten ausgetauscht werden, was die Erstellung und Weiterentwicklung von Anwendungen schneller, flexibler und einfacher macht.

Dank eigenständiger Container lassen sich Microservices als geschlossene Einheiten unabhängig von anderen verwalten. Ein wesentlicher Unterschied zu klassenbasierten Modellen. Hier müssen immer alle Teile gleichzeitig produktiv sein.

Ein Beispiel ist die Adresse, bestehend aus Name, Vorname, Funktion, Anrede, Strasse, Nummer, Postleitzahl, Telefon, Mobile, E-Mail und weiteren Kontaktinformationen. Die Adresse ist ein Modell und beinhaltet alle Informationen. Demgegenüber kommt ein Microservice mit Telefon, Mobile und E-Mail aus, kennt aber trotzdem die zugehörige Adresse. Im Verbund lassen sich so Microservice-Container zu ganzen Anwendungen koppeln. Zudem sind Microservices plattform-unabhängig und können in unterschiedlichen Programmiersprachen entwickelt sein. Trotzdem funktionieren die Kommunikation und der Datenaustausch, gerade und sogar bei unterschiedlichen Webanwendungen.

Vorteile von Microservices auf einen Blick:

  • einfaches und schnelles Deployment
  • Risikominimierung für Fehler
  • sicheres und einfaches Zurückrollen
  • Technologiefreiheit
  • schrittweise oder singulare Migration
  • geringer Koordinationsaufwand auch bei komplexen Projekten
  • unabhängiges Deployment je Entwickler (Entwicklerteam)
  • konsequente Entkopplung der Module
  • digitale Transformation
  • agile Prozesse

 

CMS Systeme

Seit vielen Jahren werden Website-Inhalte über klassische CMS verwaltet. Damit konnte man individuelle Designs aufsetzen, einen WYSIWYG- Editor nutzen, oder Workflows und Freigabeprozesse regeln. Zu einer Zeit, als die Welt noch aus Web und Email bestand, genügte dies für ein eigenständiges Marketing. Ein CMS basiert auf dem herkömmlichen Ansatz der Applikationsentwicklung und die CMS-Architektur hat Auswirkungen auf Funktionalität, Integration und Erweiterbarkeit. Das CMS besteht aus einem monolithischen Kern, der Individual-Code macht es zudem schwer, andere Applikationen zu integrieren. Diese klassischen Architekturen stoßen aber besonders in einer Multikanal-Umgebung schnell an ihre Grenzen.

Ein traditionelles CMS besteht aus dem Frontend und dem Backend.

Im Backend werden Inhalte erfasst und verwaltet und im Frontend präsentiert. Die Visualisierung erfolgt aber nicht nur im Frontend, sondern im Zusammenspiele von Backend und Frontend. Bei einer einfachen Website enthält das Backend:

  • Eine einfache Oberfläche, um Content zu erstellen
  • Eine Datenbank zur Speicherung digitaler Assets
  • Eine Anwendungsebene zur Erstellung und Anwendung von Design-Frameworks

Das Frontend greift dann auf die Inhalte, die gespeicherten Assets und das im Backend erstellt Designs zu, um all dies auf einer HTML-Seite zu veröffentlichen.

Applikationsübergreifende Nutzung der Daten

Egal, welches CMS man einsetzt, die Anforderung an eine applikationsübergreifende Nutzung der Daten steigt. Geräteübergreifende Content-Nutzung bedeutet, dass das Kundenerlebnis über alle Plattformen hinweg durchgängig konsistent bleibt, denn auf Kundenseite steigen die Erwartungen an die User Experience.

Der Interessent oder Kunde entscheidet wie, wann und warum er mit einem Unternehmen in Verbindung tritt. Die Kundenerfahrung muss dabei auf allen Kanälen eine durchgehend gleich hohe Qualität haben und es dürfen keine Bruchstellen bei Prozessen entstehen. Dadurch steigt das Vertrauen des Interessenten und Kunden. Versteht es ein Unternehmen, seine digitalen Kanäle effektiv und kundenfreundlich zu gestalten, steigt die Umwandlungsrate (conversion rate) von Interessenten zu Kunden.

Mit diesem Wandel Schritt zu halten ist technologisch anspruchsvoll.

Es gibt immer mehr Endgeräte mit unterschiedlichen Bildschirmgrößen, neue Plattformen und digitale Kanäle. Es braucht eine neue Konzeption für die Datenhaltung, Datenausgabe, den Datenaustausch und die Weiterverarbeitung von Daten – nicht zuletzt aber auch intelligente, kanalübergreifende Reporting-Systeme.

 

Headless Systeme

Was sind die Unterschiede zwischen traditionellen CMS-Systemen und Headless-Anwendungen? Normale CMS-Systeme haben eine seitenbasierte, Headless-Systeme eine objektbasierte Architektur - was sind die Unterschiede? Welches sind die Vorteile der Headless-Architektur?

Das „kopflose“ Headless-System ohne ein Frontend aus. Es geht alles nur um das Backend. Die Inhalte werden in der reinsten Form ohne Präsentationsschicht, Templates, Design und Ähnliches erstellt. Über eine Schnittstelle können diese Inhalte von beliebigen Geräten oder Systemen abgerufen werden – und unterschiedlich dargestellt werden.

Die Merkmale von Headless

Die Schnittstelle
Die REST-API (Representational State Transfer-Application Programming Interface) ist wenig komplex und dennoch sehr flexibel einsetzbar. Die REST-API verwendet HTTP-Anfragemethoden wie PUT, GET, POST und DELETE. REST unterliegt grundsätzlich dem Architekturstil des Webs.

Verfügbarkeit
Ein REST-API steht auch externen Anwendungen zur Verfügung. Der Zugang funktioniert demzufolge nicht nur lokal auf dem Server selbst.

Content Negotiation 
Per Content Negotiation fordern Clients (zum Beispiel ein Webbrowser) das Element im gewünschten Format an. Unterschiedliche Anwendungen benötigen unterschiedliche Dateiformate. Die URI/URL referiert bei REST deshalb nicht auf eine Ressource in einem bestimmten Format, sondern nur auf das Element an sich.

Abgeschlossene Nachrichten
Jede Nachricht an den Server ist für sich selbst abgeschlossen. Sie ist unabhängig von  vorhergehender oder nachfolgender Nachricht.

Links
Innerhalb von REST sind Objekte durch Hyperlinks miteinander verbunden. Damit ist eine einfache Navigation sicher gestellt.

Kommunikation mit unterschiedlichen Clients
Durch die Einhaltung dieser Architekturprinzipien funktioniert die Kommunikation zwischen Server/API und unterschiedlichen Clients problemlos. Deshalb ist die REST-Architektur perfekt für ein Headless-CMS-API geeignet.

Ausgabe auf unterschiedlichen Plattformen 
Ein durchgehendes Kundenerlebnis über alle Plattformen hinweg ist mit einer geräteübergreifenden Content-Nutzung natürlich viel einfacher zu realisieren als mit einzelnen, für sich selbst abgeschlossenen Applikationen im Zusammenspiel. Headless bringt das Unternehmen weiter – und es geht dabei nicht nur um reine Zeit- und Kostenersparnis.

Inhalte zuerst
Inhalte bilden eine Brücke zwischen Ihrem Unternehmen und Ihren Interessenten und Kunden. Inhalte vermitteln Ihre potenziellen Kunden einen positiven Eindruck Ihres Unternehmens. Dabei sind vor allem die Qualität und die fehlerfreie Übermittlung der Inhalte entscheidend. Dies gilt sowohl für allgemeine Produktinformationen als auch für kundenspezifische Informationen. Nutzt man ein Headless-System, genügt es, ein Content-Element zu generieren, ohne es unterschiedlichen Ausgabekanälen anpassen zu müssen. Mit einem Headless-System wird ein Inhalts-Element überall unverfälscht dargestellt, ohne dass sich bei der Bearbeitung Fehler einschleichen können.

Unabhängigkeit von Seiten
Die Inhalte von CMS-Systemen sind seitenbasiert. Die Inhalte von Headless sind unabhänging von Seiten integrierbar.

Wiederverwendbarkeit
Einmal eingegebene Headless-Inhalte können sehr leicht wiederverwendet und auf unterschiedlichen Kanälen ausgegeben werden.

Zeit sparen und schnellere Prozesse
In einem traditionellen CMS müssen Inhalte zuerst erstellt, dann redigiert, bearbeitet und erfasst werden. Bei der Inhaltserfassung müssen sich Redakteure, oder Mitarbeiter, welche für Inhalte verantwortlich sind, nicht mehr damit beschäftigen, auf welche Art und Weise erstellte Inhalte auf den verschiedenen Geräten dargestellt werden. Viele CMS-Systemen bieten Editoren für die Gestaltung von Inhalten, deren Funktion meist sehr eingeschränkt werden muss. Trotzdem müssen bei den meisten CMS Systemen die Inhalte noch manuell ausgezeichnet (formatiert) werden. Beim Headless-Ansatz ist anders. Noch während ein Projekt technisch umgesetzt wird, kann der Content bereits integriert werden. So ist es möglich, Contentschreiber und Programmierer gleichzeitig arbeiten zu lassen, ohne dass der eine auf die Resultate des anderen warten muss. Mit Headless erzielt man höhere Reaktionszeiten dank Trennung von Inhalten und Design. Eine Anwendung, die sich nur auf die Auslieferung von Inhalten fokussiert, kann optimal performen und ist damit schneller.

Gestalterische Flexibilität
Die Darstellung wird bei einer Headless-Architektur nicht im CMS gelöst. Entwickler können für die Visualisierung verschiedene Frontend-Frameworks nutzen und Inhalte via API-Schnittstelle einbinden. Dies ermöglicht eine freie Wahl des Mediums oder des Kanals.

Kosten sparen
Im Vergleich zu CMS-Appliaktionen sind Headless-Systeme kostengünstiger, vor allem bei einer Gesamtkostenbetrachtung. Zudem können Headless-Systeme in der Cloud skaliert werden und passen sich so dem Wachstum eines Unternehmens an.

Benutzerfreundlichkeit
Traditionelle Content Management Systemen sind oft mit Funktionen überfrachtet. Sie werden dadurch umständlich in der Bedienung und langsam in der Anwendung. Headless-Systeme sind hingegen einfach und schlank zu bedienen, da sie ausschliesslich auf Inhalte ausgerichtet sind. So sind sie einfach in der Bedienung und bedienen alle Ausgabe-Kanäle von ein und demselben Backend aus.

Flexibilität
Manchmal scheitern gute Ideen an der Umsetzung, da das CMS genau die gewünschte Anwendung nicht bietet. Bei Headless können Programmierer unabhängig von einer Applikation Inhalte nutzen und visualisieren. Gleichzeitig können die Inhalte unabhängig von der Ausgabe erstellt werden und bei der Visualisierung können unterschiedliche Technologien miteinander oder nebeneinander eingesetzt werden.

Cloud Service und Skalierbarkeit
All-in-one CMS-Systeme laufen auf einem Server. Skalierbare, entkoppelte Auslieferung von Inhalten aus der Cloud ist fast ausschliesslich nur mit der Headless-Architektur umsetzbar.

 

Alles dreht sich um die API

Der wichtigste und zentrale Bereich des Systems ist die Schnittstelle, welche es ermöglicht, dass Inhalte auf den unterschiedlichsten Kanälen mit den unterschiedlichsten Systemen dargestellt werden können. Es gibt keine Einschränkungen, solange die Frontend-Lösungen webbasierte Kommunikationsprotokolle verstehen um die Daten bekommen und visualisieren zu können.

Native Apps
Mit einer Headless-API können Inhalte für Apps unabhängig von der Darstellung ausgegeben werden. Die Darstellung wird App-seitig umgesetzt.

Microservices
„API first” ermöglicht in Headless-Anwendungen eine einfache Integration in Drittsysteme. Das ist mit klassischen CMS-Systemen schwierig realisieren.

Zukunftssicherheit
Dank der Trennung von Inhalt und Design mit der Headless-Architektur ist die Investition in die Erarbeitung von Inhalten auch eine Investition in die Zukunft. Das Design einer Website kann jederzeit angepasst werden, ohne dass bei jeder Änderung das CMS wieder neu angepasst werden muss.

Das waren viele Vorteile von Headless – gibt es auch Nachteile?

Es gibt auch Nachteile.

Personalisierte Inhalte 
Ein klarer Nachteil ist die Tatsache, dass mit einem Headless Ansatz personalisierte Inhalte sehr viel aufwändiger zu realisieren sind als  mit einem normalen CMS.

WYSIWYG 
Weil die Präsentation der Inhalte Sache der Entwickler ist, kann die WYSIWYG (What You See Is What You Get)-Bearbeitung nicht genutzt werden.

Fehlendes Frontend
Was zum einen ein Vorteil ist, kann aber auch ein Nachteil sein. Entweder man entwickelt ein eigenes Frontend – oder man nutzt eine bestehende, andere Applikation, um die Inhalte anzuzeigen.

Fehlende Funktionen
Funktionen wie Formulare, Bildergalerien oder Mitgliederbereiche müssen zusätzlich programmiert oder durch ein anderes System bereitgestellt werden.

Aus einem System werden viele
Das Gesamtsystem wird komplexer, da es aus mehreren unabhängigen Teilen aufgebaut ist.

Anforderungen an die API-Konfiguration
Zugriffsrechte erhöhen die Komplexität der Headless-API.

Personalisierung
Die Personalisierung und Ausspielung von Inhalten kann nicht im Backend gelöst werden - das muss im Frontend realisiert werden.

Betrieb von mehreren Softwaresystemen
Mit einem Headless CMS können mehrere Systeme betrieben werden. Es müssen die Anforderungen der jeweiligen Systeme beachtet werden.

API Fähigkeiten
Das Leistungsspektrum der Headless API muss breit und tief sein und darf keine Einschränkungen von Anwendungsfällen produzieren.

Headless wird immer wichtiger

Headless-CMS sind ein wichtiger Teil der Zukunft des Content-Managements.
Die Vorteile eines Headless CMS in der Übersicht:

  • Unbegrenzte Anzahl von Frontends
  • Kombinierbar mit unterschiedlichen Programmiersprachen
  • Flexiblere Gestaltung des Frontends
  • Kontinuität durch Entkopplung
  • Dynamische Daten

Es können viele Bereitstellungsebenen in verschiedenen Sprachen erstellt werden, um Content in beliebigen neuen Kanälen bereitzustellen. Im Backend ist die Erstellung von Inhalten nicht mehr an Programmiersprachen gebunden. Im Frontend können das Look & Feel und die Funktionalität mit Tools entwickelt werden, die unabhängig vom CMS einsetzbar sind. Die Inhalte werden mit der flexiblen APIs überall veröffentlicht.

Bedürfnisgerechten und interaktiven Content erstellen wird immer komplexer und die Erwartungen der Nutzer werden immer größer. Es entstehen laufend neue Kanäle und Nutzergeräte. Und es muss sichergestellt werden, dass die Inhalte so effizient wie möglich und überall bereitgestellt werden für heute und in Zukunft. Inhalte sind eine Investition in die Zukunft.

 

Vom Anbieter- zum Nachfragemarkt

Früher wurde die Kommunikation formal, inhaltlich und zeitlich integriert. Mit Hilfe von Kampagnen wurden Inhalten zu Marken, Produkten und Qualität zum Konsumenten transportiert. Natürlich geschieht das immer noch. Marken verbinden gemeinsame Visionen zwischen Anbieter und Kunde und sie schaffen dadurch Beziehungen.

Aber: heute bestimmt immer mehr der Kunde wann er welche Informationen vom wem konsumieren will.

Headless und Decoupled CMS sind erst die Anfänge. Betrachtet man den schnellen Wandel von statischen Webseiten zu CMS Systemen, dann liegt die Vermutung nahe, dass auch klassische CMS bald den Gewohnheiten und Bedürfnissen der Nutzer nicht mehr entsprechen. Deshalb ist ein Umdenken beim Erstellen und Veröffentlichen von Inhalten nötig. Smartphones, Internet of Things oder virtuelle Realitäten verlangen andere Technologien als ein CMS.

 

Squidex – Headless CMS

Squidex ermöglicht es Ihnen, Inhalte an einem zentralen Ort zu verwalten und in Ihren Tech-Stack für Apps, Websites und Services zu nutzen.

Was ist Squidex?
Eine Content-Management-Hub für alle Ihre Daten. Squidex verwaltet alle Ihre Inhalte wie:
- dynamische Elemente für Ihre mobilen Apps
- Blog-Posts und Artikel für Ihre Website
- Konfigurationsdaten für Ihr Backend
- umfangreiche und strukturierte Daten für Ihre Anwendung

Wie funktioniert Squidex?
Der Kern von Squidex ist ein Webservice. Es bietet APIs zur Verwaltung der Struktur Ihrer Inhalte, Sprachen, Einstellungen und natürlich der Inhalte selbst. Sie können die Inhalte aus Ihrem Backend, mobilen Apps, Websites und anderen Client-Anwendungen konsumieren. Natürlich bieten wir auch eine umfangreiche Benutzeroberfläche für Endanwender (Management UI).

Squidex Backend Administration
Die Squidex Backend Administration ist sehr intuitiv aufgebaut und beinhaltet

  • Settings
  • Sprachen
  • Benutzermanagement mit Rollen und Rechten
  • Dashboard mit Statistiken
  • Schemas
  • Clients
  • GraphQL für strukturiere Ausgaben

Ausgabe auf verschiedene Marketing-Plattformen
Mit Squidex können Sie Ihre Marketing-Plattformen schnell um umfangreiche Inhalte erweitern. Die API ist intuitiv und einfach zu bedienen, so dass Sie diese genau so integrieren können, wie Sie es wollen.

Struktur definieren
Für jeden Inhaltstyp definieren Sie ein Schema.

Inhalte erstellen
Erstellen und verwalten Sie Ihre Inhalte im Verwaltungsportal und veröffentlichen Sie die Inhalte, wenn Sie bereit sind.

Erfahren Sie mehr zu Squidex auf unserer Produktseite.

Squidex – Headless: schnell implementiert, extrem flexibel und performant

 

Die Visualisierung von Inhalten

Bei der Visualisierung von Inhalten geht es im Wesentlichen und zwei Themen:

  • die Aufbereitung von Inhalten (Struktur der Daten)
  • die Darstellung der Daten (Formatierung und grafische Form)

GraphQL

Auch wenn die verfügbaren REST-API’s durchaus beeindruckend sind, gibt es dennoch interessante Alternativen wie zum Beispiel GraphQL.

GraphQL wurde von Facebook für eigene Anwendungen entwickelt. Diese flexible Abfragesprache und Laufzeitumgebung ist mit SOAP und REST ebenbürtig und überzeugt vor allem mit ihren Vorzügen bei komplexeren Abfragen als Web-API (Application Programming Interfaces), um Daten auszutauschen und weiterzuverarbeiten. Vor dem Hintergrund der zunehmenden Bedeutung und Komplexität mobiler Webapplikationen für Android und iOS zeigt sich die große Stärke von GraphQL als API-Basis: Man kann mit einer einzigen Query Zugriff auf alle gewünschten Daten erhalten. GraphQL ist nur eine Abfragesprache. Die Bibliotheken, welche die Applikation zur Umsetzung von GraphQL verwendet, kümmern sich lediglich darum, dass die Vorgaben eingehalten werden. GraphQL ist eine Abfragesprache für Webapplikationen, die sowohl lesende als auch schreibende Operationen beherrscht. Die Implementierung der Businesslogik und das Speichern der Daten wird jedoch durch die Applikation übernommen.

GraphQL auf einen Blick

  • Steigerung der Performanz
  • Anzahl nötiger Anfragen und die Menge übertragener Daten lässt sich reduzieren
  • der Client kann gleichzeitig mehrere Ressourcen anfragen
  • der Client erhält mit nur einem Request sämtliche benötigte Daten
  • flexible Abfragesprache mit einem typisierten Schema
  • Die API ist gut dokumentiert
  • Flexibilität ist durch Entkopplung von Frontend- und Backend-Entwicklung
  • nützliche Entwickler-Tools wie GraphiQL mit Autocomplete, Validierung, Mocking und API-Dokumentation

 

Mehr zu GRaphQL
Link zu Produktseite

Wie funktioniert GraphQL?
GraphQL ist eine SQL-ähnliche Abfragesprache inklusive Laufzeitumgebung und Typsystem. Nativen mobile Anwendungen für iOS und Android, zeigten aufgrund steigender Komplexität eine zunehmend schwächere Performance. GraphQL vermag dank seiner Schnittstellenarchitektur ein positives Verhältnis zwischen abgerufenen Informationen und notwendigen Serverabfragen zu erzielen und steigert dadurch die Performance. Dank des großen Angebots an einsatzbereiten Bibliotheken lässt GraphQL eine breite Auswahl der Programmiersprachen zu.

Flexibilität
GraphQL ermöglicht flexible Anpassungen bei der Entwicklung einer Schnittstelle. Serverseitig sind nur wenige Anpassungen vorzunehmen. Das Entwicklerteam, welches für die Schnittstelle verantwortlich ist, kann vollkommen unabhängig von dem Team agieren, das für die Client-Komponente verantwortlich ist. Dies ermöglicht es in einem Projekt, zeitlich unabhängig voneinander zu arbeiten (sofern eine Spezifikation mit genauen Angaben vorliegt). Sämtliche Veränderungen oder Erweiterungen der API können ohne Versionierung durchgeführt werden. Zusätzliche Felder lassen sich problemlos und ohne Beeinträchtigung existierender Clients hinzufügen. Neue Felder beeinflussen bestehende Anfragen auch nicht. Weitere benötigte Felder können im Schema als deprecated markiert und zu einem späteren Zeitpunkt gelöscht werden. Die Informationen über solche Markierungen lassen sich über Introspektion auslesen.

Die Abfragesprache
Mit Hilfe der Query Language wird ein unkomplizierter Zugriff und ein hohes Maß an Flexibilität der API erreicht. Dies ganz im Gegensatz zu anderen Schnittstellen-Architekturen, die nur sehr strikte Abfragen auf eine einzelne Ressource zulassen. Bei REST übermittelt der Server die angefragte Ressource komplett und jede Ressource wird über eine eindeutige URL angesprochen. Bei GraphQL existiert eine URL für sämtliche Daten. Die eigentliche Abfrage erfolgt über eine Zeichenkette in einer strukturierten Form. Sie gibt gleichzeitig die Struktur der Antwort vor. Der GraphQL-Server sendet lediglich die Daten, die der Client angefragt hat. Es gibt keine Limitierung für die Zahl abgefragter Ressourcen. Der Server antwortet mit einer JSON-Struktur, die der Form der Anfrage entspricht. Und man kann mit Hilfe des Schemas gezielt definieren, welche Datenfelder abgefragt werden sollen, respektive auf welche Felder man lesende als auch schreibende Rechte hat. Die Anfrage bestimmt die Struktur der Antwort. Der Server liefert nur die Felder zurück, die der Client bei der Anfrage angibt. Diese Eigenschaft kann das Transfervolumen der Applikation stark reduzieren.

Typsystem
Die API von GraphQL erlaubt, Datenstrukturen durch eigene, serverseitige Datentypen zu beschrieben. Diese geben die Datenstrukturen vor und schaffen den Rahmen für die Abfragen. Ein Datentypen kann aus einem oder mehreren Feldern bestehen und eigene Typangaben enthalten. So können Anfragen validiert und fehlerhafte Querys abgelehnt werden. Jede einzelne Ebene einer GraphQL-Abfrage entspricht einem bestimmten Typ, wobei jeder Typ ein Set verfügbarer Felder beschreibt. Dieses Typsystem kann automatisch feststellen, ob eine Abfrage korrekt oder nicht korrekt formuliert ist und so kann GraphQL bereits vor Abschicken der Query beschreibende Fehlermeldungen ausspielen. Anfragen erlauben, das gesamte Schema (oder natürlich auch nur Teile davon) und die Struktur einzelner Typen auszulesen. So lässt sich auf einfache Art eine vollständige Schnittstellenbeschreibung erzeugen und durch dieses Typsystem ist GraphQL weitgehend selbstdokumentierend. Im Gegensatz dazu können vergleichbare REST-APIs immer nur einen bestimmten und kompletten Datensatz pro Query (Abfrage) ausgeben.

Hierarchische Struktur
Die Daten haben eine hierarchische Struktur. Komplexe Anfragen lassen sich so in einem einzigen Request formulieren und beantworten, weil sich Beziehungen zwischen den einzelnen Objekten automatisch erzeugen lassen. Damit sind sogenannte „Round Trips“ (ein Austausch mehrerer Nachrichten zwischen Server und Client) nicht notwendig und die Schnittstelle ist performanter.

Laufzeitumgebung
GraphQL ist mit verschiedenen Server-Laufzeitumgebungen zum Ausführen der GraphQL-Abfragen plattform- und anwendungsübergreifend. Es stehen Bibliotheken für diverse Programmiersprachen zur Verfügung wie beispielsweise Go, Java, JavaScript, PHP, Python oder Ruby. Zum Aufgabenbereich der Laufzeitumgebung gehören die Umwandlung (das Parsen) und die Validierung von Abfragen. Auch die Serialisierung der Antworten (Umwandlung der Objekte in eine entsprechende Bytefolge) ist ausschliesslich Aufgabe der Laufzeitumgebung. Die GraphQL-Serverinstanz liefert exakt die in der Abfrage definierten Informationen aus - nicht mehr und nicht weniger Daten als angefragt. Weit verbreitet ist die Node.js-Implementierung, die sich leicht in Webserver oder Express.js-Anwendungen einbinden lässt.

Speichern der Daten
Das Ermitteln und das Speichern der Daten in einer Datenbank ist Aufgab der Webanwendung.

Plattform-unabhängig
Diese Trennung der Aufgaben ermöglicht eine plattform- und anwendungsübergreifende, extrem flexible API-Anwendung. Und die Schnittstelle lässt sich perfekt auf die Eigenheiten Ihrer Webapplikation abstimmen.

Einfache Anwendung
Die Einfachheit der Abfragesprache ermöglicht, dass erhaltene Antworten eins zu eins die gestellten Abfragen widerspiegeln. JavaScript-Format JSON (JavaScript Object Notation) ist dabei das schlanke und performante Ausgabeformat. Somit ist das Verschicken einer Abfrage keine große Herausforderung, sofern man die Struktur der kennt. GraphQL arbeitet mit Objektgraphen, nicht mit einzelnen Ressourcen und kann Relationen abbilden. Mit einer Anfrage lassen sich damit sowohl einzelne Objekte als auch Sätze von mehreren Objekten und ganze Objektbäume auslesen.

Risiken und Sicherheitsprobleme
GraphQL stellt bei offenen APIs dann ein Sicherheitsproblem dar, wenn das Abfrageverhalten von Drittanbieter-Clients nicht kontrolliert werden kann. Eine zu hohe Zahl an Querys könnte den Server zum Absturz bringen. Die Sicherheit und Absicherung der API muss mit  Maßnahmen wie Timeouts und Einschränkung der Maximum Query Depth geregelt werden, um Angriffe durch komplexe oder große Anfragen zu blocken.

Caching 
Ein Datencaching für nicht veränderliche Abfragen ist mit GraphQL machbar, jedoch komplizierter zu realisieren als mit einer REST API. Die Abfragen gehen in der Regel per POST an einen Endpunkt, HTTP-Caching ist nicht möglich. Es gibt jedoch Alternativen, unter anderem mit Facebook DataLoader, Apollo Engine Proxy, Apollo Client und Relay.

 

Node.js

Node.js ist eine JavaScript Runtime, die es erlaubt, dieselbe Programmiersprache auf Server- und Client-Seite zu nutzen. So ist node.js interessant für die Entwicklung von Webanwendungen und Anwendungsservern. Node.js kann für die generelle Programmierung eingesetzt werden, wie zum Beispiel einfache Command-Line Tools bis hin zu dynamischen HTTP-Servern.

Immer mehr erfolgreiche Webapplikationen laufen mit Node.js, weil es blitzschnell lädt, schön aus sieht und eine hohe Nutzerfreundlichkeit erzielt.

Node.js ist aber nicht nur eine Runtime Environment, sondern auch eine Library und damit ist Node.js einfach gesagt server-side JavaScript. Das Managen von Input und Output sowie read- und write-Vorgänge aus dem Netzwerk auf Festplattenspeicher ist nicht einfach. Node.js bietet deshalb eine ausgetüftelte Kombination von serverseitigem JavaScript-Code, asynchroner Programmierung, anonymen JavaScript Funktionen und einer komplett Ereignis-basierten Architektur – der super schnellen JavaScript Engine V8 aus Googles Chrome Browser. Node.js ist jedoch kein Webserver und funktioniert nicht wie ein Apache-Server auf Ubuntu und es gibt auch kein Config-File, welches auf HTML-Files verweist.

Vorzüge von Node.js

  • extreme Skalierbarkeit: Mit Node.js lassen sich skalierbare Applikationen schreiben, welche eine sehr grosse Anzahl von Verbindungen/ Anfragen gleichzeitig handhaben kann.
  • Schnelligkeit im Ausführen von I/O Bound Operations
  • optimales managen von Input und Output über ein Netzwerk
  • Multithreading
  • Blitzschnelle Ausführung von WebanwendungenMit Node.js kann man Webanwendungen erstellen, die sehr schnell in der Ausführung sind. In den meisten Fällen braucht es nicht einmal Ladezeit.
  • Alles in einer Technologie: Mit dem MEAN Stack kann man starke Anwendungen über alle Bereiche hinweg (Frontend, Backend, Datenbank) mit JS Technologien abdecken.
  • Node.js eignet sich für Chat Programme, auf welche viele Nutzer gleichzeitig zugreifen. Oder für Echtzeit Programme: Systeme auf welche mehrere Nutzer gleichzeitig zugreifen und Änderungen vornehmen und die Nutzer die Änderungen sehen sollen.

Link
Mehr zu node.js                   Link auf Produktseite

Node.js als Webserver

Als event-basierte Laufzeitumgebung wurde Node.js speziell für die Entwicklung von skalierbaren Netzwerkanwendungen entworfen. Wenn man Node.js als Webserver (HTTP-Server) einsetzen will, dann wird der Sever einfach aufgesetzt und dank der nützlichen Build-In Modulen und eingebauten Libraries von das auch automatisiert möglich. Node.js macht asynchrone I/O Vorgänge einfacher. JavaScript ist die Sprache, die in einem Browser läuft und dafür sorgt, dass eine Webseite dynamische Inhalte haben kann. Mit Node.js kann man JavaScript auch als Server-Applikationen schreiben und damit hat man im Frontend und im Backend die gleiche Programmiersprache. Der Browser besitzt eine sogenannte JavaScript Engine, die den Code interpretiert und ausführt. Beim Chrome Browser heißt diese Engine V8. Die V8 Engine ist in C++ geschrieben, gut optimiert und leistungsfähig. Die einfachste Möglichkeit, JavaScript Code auf dem Server laufen zu lassen, ist also die V8 Engine auf dem Server bereitzustellen.

JavaScript, das im Browser ausgeführt wird, unterliegt aus Sicherheitsgründen gewissen Restriktionen. Die Engine V8 erlaubt es demnach nicht, auf das Dateisystem zuzugreifen, Datenbanken zu benutzen oder Funktionen des Betriebssystems zu verwenden.

Node.js Core Library
V8 z.B. keine Möglichkeiten auf das Dateisystem zuzugreifen oder auf direktem Weg Funktionen des Betriebssystems zu verwenden. Im Backend werden solche Funktionen jedoch benötigt. Das NodeJS Ecosystem enthält deshalb die NodeJS Core Library und damit beispielsweise Methoden, mit denen http Requests und Responses verarbeitet werden können. Mittels Wrapper ist es dann möglich, die in NodeJS Core enthaltenen Funktionen und die C++ Implementierungen mittels JavaScript Code aufzurufen.

Die Libuv Library - Multithreading in Node.js
Ein JavaScript Programm kann sich zu einem Zeitpunkt nur um genau eine einzige Sache kümmern, ist deshalb Single-Threaded, weil die V8 nur in einem Thread läuft. Für eine Server-Anwendung ist das unbrauchbar, soll der Server doch hunderte oder  tausende von Anfragen zum gleichen Zeitpunkt bewältigen können. Mit der Libuv Library sind parallele Ausführungen jedoch möglich. Die Libuv realisiert als zentrale Komponente die Event-Loops, welche dafür sorgen, dass es sich bei NodeJS um eine sogenannte „event getriebene asynchrone JavaScript Laufzeitumgebung“ handelt. Die Libuv erzeugt standardmäßig einen Threadpool der Größe vier, auf den Aufgaben verteilt werden können und kann Tasks an das Betriebssytem weitergeben, welches sich dann um die Terminierung kümmert. Multithreading ist ein guter Ansatz, wenn es darum geht rechenintensive Tasks zu verteilen. Bei einem Datei-Download ist nicht die Rechenleistung massgeblich, sondern die Netzwerkverbindung ist der Flaschenhals und deshalb werden C++ Methoden (asynchrone primitiv Typen) genutzt, mit denen solche Aufgaben an das Betriebssystem delegiert werden können. So können mit Node.js viele Verbindungen gleichzeitig bearbeitet werden. Bei jeder neuen Anfrage wird die Callback-Funktion ausgeführt. Gibt es jedoch nichts zu tun, befindet sich Node.js im Ruhezustand. HTTP ist ein Basiselement in Node.js - dadurch ist Node.js sehr gut als Grundlage für Web-Bibliotheken oder Frameworks geeignet.

Node.js hat jedoch auch ein paar Nachteile
Node.js ist nicht für rechenintensive Aufgaben geeignet: Falls es um CPU-lastige Aufgaben geht, in denen viel Rechnerkapazität verwendet wird, dann ist Node definitiv nicht der richtige Ansatz.

Oftmals fehlende Rückwärtskompatibilität: Wenn neue Versionen von Node.js veröffentlicht werden, kann es sein, dass man den bestehenden Code anpassen muss. Man sollte davon ausgehen, dass Mehraufwand für die Programmierung entstehen kann, einfach auch deshalb, weil sich Node.js immer noch im Wandel befindet.

Fazit 
Im Vergleich zu Node.js kommt einem eine C# und .NET Applikation ungemein umständlich und schwerfällig vor. Oft hängt man aber trotzdem an der Vorstellung, dass Komplexität ein Qualitätsmerkmal ist und dass C# und .NET im ernsthaften Unternehmenskontext die sicherer und bessere Wahl ist.

Beachtet man aber die Nachteile einer monolitischen Applikation und die Tatsache, dass heute ja eigentlich alles webbasiert entwickelt wird, gibt es nur noch wenige Argumente, die für Komplexität sprechen. Wer glaubt, schwierige Probleme seien nur kompliziert zu lösen, hat vieles nicht verstanden. Daher ist es wichtig, anders zu denken, und sich für Neues zu öffnen. Node.js zeigt klar auf, wie man den über 15 Jahre angesammelten Ballast von .NET hinterfragen kann.

 

Vue.js

Vue.js ist ein Webframework zum Erstellen von Single-Page-Webanwendungen nach dem MVVM Muster. Seit der Einführung von Vue.js - dem progressiven Framework - gab es einen großen Hype um das neue JavaScript Framework. Daher ist es wichtig zu verstehen, welche Probleme das Framework löst und ob es empfehlenswert ist, es einzusetzen und, ob der Einsatz von Vue.js eine zukunftssichere Entscheidung ist.

 

Vue.js ist ein JavaScript-Webframework, das zum Erstellen von Single-Page-Webanwendungen verwendet wird. Es kann auch für Multipage Webseiten verwendet werden. Vue.js bietet eine schnelle und einfache Entwicklung. Vue.js ist sehr flexibel gegenüber anderen Frameworks und hat die Eigenschaften von älteren Frameworks wie Angular.js und React.js kombiniert und verbessert.

Blicken wir etwas zurück auf die letzten beiden Jahrzehnte der Web-Entwicklung. Webseiten waren zu Beginn reine Dokumente, basierend auf HTML-Dateien. Statische Webprojekte waren das non plus ultra. Später kamen die ersten CMS Systeme und mit Hilfe von CSS2 konnte das Erscheinungsbild einer HTML-Datei gestaltet werden. JavaScript-Dateien steuerten mit wenig logischer Funktionalität Änderungen des Stylings nach bestimmten Benutzerinteraktionen oder die Überprüfung von Formularen im Webbrowser. AJAX revolutionierte 2005 die Webapplikationen mit einem neuen Ansatz, welcher das asynchrone Laden von JavaScript und XML ermöglichte. Gerade ein Jahr später erfolgte die Lancierung von jQuery. Das waren die „guten alten Zeiten der Webentwicklung“.

Im Oktober 2014 wurde die HTML5-Spezifikation veröffentlicht. Danach entwickelte sich die Webtechnologie rasend schnell und substituierte viele klassische Applikationen. Die in Computern eingesetzte Hardware wurde besser. Und viele Anwendungen wurden webbasiert entwickelt, Smartphones gewannen an Beliebtheit.

Der Trend begann, Funktionalitäten und Logik vom Server in den Client zu überführen. „Mobile First“ und „Offline First“ gewannen mehr Bedeutung. Neue Frameworks und Mikro Bibliotheken wurden entwickelt, welche der Komplexität und Anforderungen mit neuen Formaten gerecht wurden. Angular und React wuchsen zu den meist verwendeten Frameworks heran. Angular ist ein komplettes Web Applications Framework, während React zu der Kategorie der Mikro Bibliotheken gehört.

AngularJS entwickelte sich als Tool für komplexe Webapplikationen. Ein AngularJS Projekt ist mächtig und bietet viel Funktionalität. Das schwergewichtige Framework erleichtert zwar die Realisation eines grossen Webprojekts, bei kleinen Webprojekten ist es jedoch zu umständlich. Der ursprüngliche Vorteil, auch einzelne Webseiten zu verwalten wich dem Ansatz, nur noch das gesamte Projekt verwalten zu können. Das steht im Widerspruch zur Effizienz bei der Entwicklung kleiner Projekte oder von Projekten mit kurzer Lebensdauer.

Die Entstehung von Vue.js

Erfunden wurde das Framework einem ehemaligen Mitarbeiter von Google, der mit seinem Team an Ideen und Konzepten für noch nicht veröffentlichte Software-Produkte arbeitete und dafür Prototypen mit AngularJS baute. Die Nachteile des AngularJS Frameworks für Prototypen waren unübersehbar. Deshalb wurde ein neues Framework entwickelt, welches bestens für kleine Prototypen geeignet war.

Vue zeichnet sich vor allem durch die Möglichkeit einer progressiven Integration in grössere Projekte aus. Der Kern des Frameworks ist minimal gehalten. Vue.js installiert notwendige Bestandteile wie Routing, State-Management und vieles mehr als separate Projekte.

Was macht Vue.js effizienter für kleine Projekte?

AngularJS      „Two-way Data-binding“ / „Dependency Injection“
Vue.js             One-way Data-flow“ / „Dirty Checking“

Durch diese progressive Natur ist Vue.js in sehr kleinen Projekten genauso komfortabel wie bei der Entwicklung von komplexen Prozessen auf dem Client. Das macht Vue.js zum flexiblen und mächtigen Tool zugleich. Man erzielt schon mit wenigen Zeilen Code erstaunliche Ergebnisse.

Vue.js ist eine neue Konzeption – und nicht einfach eine reduzierte Version von AngularJS und verfolgte ab frühestem Stadium bereits andere Prinzipien und die Komplexität zu verringern. Eine der größten Stärken von Vue.js ist, dass diese Zusatzfeatures nicht automatisch im Kern von Vue.js mitgeliefert werden, sondern je nach Bedarf hinzugenommen werden können. Damit können sowohl kleine Webprojekte als auch komplexere Applikationen realisiert werden. Vue.js passt sich einfach an die Projektkomplexität an. Wichtigste Bestandteile von Vue.js sind zudem die Verwendung eines Virtual DOM und das Deklaratives Rendering bei Single File Components.

Die Vorteile von Vue.js

Virtual DOM

Single File Components

Template Sektion

Script Sektion

Deklaratives Rendering

Style Sektion

Wiederverwendbarkeit

Aufteilen in mehrere Dateien

Virtual DOM

Das virtuelle DOM von Vue.js ist eines der Pro-Argumente schlechthin, wenn es um die Bibliothek geht. DOM steht für Document Object Model und ist eine interne Repräsentation der Website oder Webseite, die plattform- und sprachenunabhängig ist. Das virtuelle DOM ist als Abstraktion des DOM aus dem Browser leichtgewichtiger und schneller im Abarbeiten von Befehlen. Vue.js ist sowohl reaktiv als auch deklarativ und erlaubt visuelle Elemente zu erstellen und diese erst bei Anfrage zu darzustellen. Auch dann, wenn sich bestimmte Zustände und Daten in den Komponenten ändern.

Das Virtual DOM ist eine Baumstruktur, die aus dem HTML-Code der Web-Anwendung aufgebaut wird, den der Server dann an den Browser sendet. Jeder Knoten des Baumes entspricht einem HTML-Element, Verschachtelungen werden als Vater-Kind-Beziehungen der Knoten verdeutlicht. Es gibt verschiedene Tools zur Darstellung des DOMs. Diese Visualisierung ist jedoch für den Webseiten-Benutzer nicht sichtbar. Dieses abstrakte Duplikat des eigentlichen DOMs ist jedoch um einiges leichter, da nur eine Struktur enthält, die sich tatsächlich auch verändern lässt. Denn: sobald DOM-Updates erfolgen sollen, werden diese zuerst einzeln im virtual DOM vorgenommen. Ein intelligenter Algorithmus vergleicht im Anschluss die Unterschiede in einem Zug im tatsächlich gerendertem DOM.

Single File Components

Vue.js setzt auf Single File Components.  In einer Vue-Datei kann man folgendes definieren:

  1. Das Markup als Template in HTML
  2. Die Logik als Skript in JavaScript
  3. Der Style in CSS

Alles in einer einzigen Datei,  die daher auch ihren Namen hat – die Single File Component. Durch dynamisches Bundling ist es jedoch trotzdem möglich, HTML, JavaScript und CSS in getrennte Dateien abzulegen — dennoch gilt hier der Grundsatz einer abgeschlossenen Komponente. In der Regel werden alle drei Bestandteile in eine Datei geschrieben. Kleine Komponenten haben den Vorteil, testbar, wartbar und leicht erweiterbar zu sein. Diese Komponenten folgen daher dem Prinzip des Separation of Concerns. Dieses Prinzip bedeutet, dass man Zuständigkeiten strikt voneinander trennt. Eine einzelne Komponente erfüllt genau ihre Aufgabe, nicht mehr und nicht weniger. Dadurch kann gewährleistet werden, dass die Komponente universell einsetzbar ist. Single File Components bestehend aus Template, Script und Style managen so das Aussehen und Verhalten einer Komponente. Diese Single File Components lassen sich nun baumartig miteinander verbinden (virtuelle DOM).

Script
Eine Vue Komponente kann global oder lokal registriert werden. Das ist abhängig von der Architektur des Projektes.


Deklaratives Rendering
Die Daten und der DOM werden verbunden. Die Mustache Syntax und das Binden von Dateiattributen per v-bind werden vermischt. Ändert sich der Wert, wird das Template automatisch angepasst. Das Ganze funktioniert ebenfalls in die andere Richtung. Bindet man ein Datenmodell an ein Input Feld, so wird der Wert des Modells automatisch angepasst, sobald der Nutzer ihn verändert.

Style
Der Style muss nicht in purem CSS3 geschrieben werden. Der Einsatz von SCSS oder SASS ist über das Sprachattribut setzbar. Der Vue Loader kann das Attribut scoped dazu nutzen, um die dort gesetzten Styles nur spezifisch bei der Komponente einzusetzen. Das Attribut scoped verhindert zwar nicht das Setzen von globalen Styles für alle Paragraphen, aber sorgt dafür, dass nicht andere Paragraphen anderer Komponenten ebenfalls zentriert in der Größe von 2em geschrieben werden.

Wiederverwendbarkeit
Mit Mixins und Slots können Komponenten dynamisch und wiederverwendbar gestaltet werden. Slots sind so etwas wie Platzhalter. So kann die Elternkomponente einen beliebigen Inhalt in den Slot einer Kindkomponente einfügen, ohne dass die Kindkomponete wissen muss, was dieser Inhalt darstellt. Mixins werden in der Form einer Vue Komponente geschrieben. Komponenten können diese Mixins integrieren, um den Funktionsumfang ebenfalls zu nutzen.

Aufteilung in mehreren Dateien
Vue.js zwingt einen nicht, eine Single File Component immer in eine einzelne Datei zu schreiben. Es ist durchaus auch möglich, das HTML, CSS und JavaScript in mehrere Dateien abzulegen. Dadurch können CSS und JavaScript ausgelagert und in die Datei des Templates importiert werden.

Konfiguration eines Vue.js Projektes 
Mit Vue.js ist es möglich, den Funktionsumfang der grafischen Oberfläche auch zu einem späteren Zeitpunkt zu ändern. Man ruft das User Interface erneut auf und nimmt die Anpassungen vor. Wird für mehrere Projekte immer wieder das gleiche Setup benötigt, kann man eine Voreinstellung speichern. Nachdem die Konfiguration eines neuen Projektes gespeichert ist, generiert die Vue CLI automatisch das Setup mit vorgeschriebenen Templates.

Single-Page Anwendung
Diese Webanwendung besteht aus einem einzigen HTML Dokument, dessen Inhalte dynamisch nachgeladen werden.

Entwurfsmuster
Ein Entwurfsmuster in der Softwareentwicklung ist eine bewährte Lösungsschablone für wiederkehrende Probleme.

Performance
Einer der grössten Vorteile von Vue.js ist die Geschwindigkeit. Vue.js ist sehr schlank, und performt sehr schnell. Ein Grund dafür ist die bessere Implementierung des virtual DOM. Vue.js braucht relativ wenig Overhead und arbeitet bestens mit Komponenten. Die Single-File-Components, die allen Code von HTML über CSS bis Javascript in einer Datei unterbringen, sind in Kombination mit Webpack vorkompiliert, was dem Browser Arbeit erspart und zusätzlich für Performance sorgt.

Die Vorteile von Vue.js auf einen Blick
Man pickt sich genau das heraus, was man braucht. Die Vorteile von Vue.js sind zum einen der kleine Kern, der dadurch auch zu einer geringen Dateigröße an ausgeliefertem JavaScript führt, zusammen mit der Erweiterbarkeit des Funktionsumfangs, der sich dementsprechend an die Projektkomplexität anpasst.

 

Responsive Design, Web-Apps und Apps
Allgemein betrachtet kann eine Applikation jede Art von Anwendung sein. Eine Applikation lässt sich nicht von der Hardware, den physischen Bestandteilen eines Computers oder eines mobilen Gerätes trennen, denn die Applikation wird auf Basis des Betriebssystems auf dem Gerät ausgeführt. 

Mobile Apps
Mobile Anwendungen werden auf Mobilgeräten wie Smartphones, Tablets und “smarten” Geräten wie Smart TVs oder Autos mit integrierter Software ausgeführt. Sie laufen in der Regel autonom.

Web-Apps
Neben rein mobilen Anwendungen haben sich auch Web-Applications durchgesetzt. Sie erfordern kein manuelles Herunterladen einer „App“, sondern werden lediglich im Cache des Browsers zwischengespeichert. Web-Apps können nur eingeschränkt auf die Gerätehardware zugreifen. Sie sind mit einem Browser vergleichbar. Auch ursprüngliche Desktop-Anwendungen wie zum Beispiel Microsoft Word werden aus der Cloud immer mehr online im Browser genutzt. 


Entwicklung von Android Apps
Android ist ein Betriebssystem für Mobiltelefone und Smart TVs verschiedenster Hersteller. Die Apps werden aus Google Playstore heruntergeladen. Die Laufzeitumgebung ist Android Runtime (ART), die integrierte Entwicklungsumgebung Android Studio.

Entwicklung von iOS Apps
iOS wurde von Apple entwickelt und wird nur für Apple-Geräte benutzt. iOS ermöglicht den Betrieb von iPhones und iPads und ist kompatibel mit watchOS und tvOS für Apple Watches und Apple TVs. Apple bietet den App Store für den Download von Apps an. Die App-Entwicklung erfolgt mit der integrierten Entwicklungsumgebung XCode auf einem iOS betriebenen Gerät. Eine Kompilierung der Apps erfolgt direkt in Maschinencode. 

Native Apps
Es gibt native und hybride Mobile Apps. Eine native App wird für eine spezifische Plattform entwickelt, also für iOS separat und für Android separat. Über Google Playstore (Android Apps) oder den Apple App Store (iOS Apps) erfolgt der Download auf die entsprechenden Geräte. Die Entwicklung und Distribution von nativen Apps sind aufwändig und teuer. Deshalb werden nur noch bei grossen Projekten unterschiedliche Apps für die verschiedenen Betriebssysteme programmiert.

Hybride Apps
Mit Hybride wurde eine App getrennt für das jeweilige Betriebssystem entwickelt. Diese Technologie ist jedoch sehr aufwändig, da zwei komplett unterschiedliche Entwicklungen gepflegt werden müssen. Mittels einem Web-Container, in dem eine Website ausgeführt wird, sind Hybrid Apps auf verschiedensten Geräten lauffähig. Es kommen Web-Technologien wie HTML, CSS und JavaScript zum Einsatz. Heute sind die Technologien so weit fortgeschritten, dass es bezüglich Performance keinen Unterschied zwischen einer nativen und einer hybriden App mehr gibt.


Responsive Design
Eine Alternative zu einer App bietet das Responsive Webdesign. Hier wird die normale Webseite für die mobile Anwendung optimiert. Je nach Display und Interaktion reagiert die Anordnung auf dem Endgerät und passt sich an. Heute sind fast alle Anwendungen mit Bootstrap realisiert und deshalb vom CMS System aus schon responsive. So kann das entwickelte Responsive Design auf möglichst vielen unterschiedlichen Bildschirmgrössen getestet werden. Websites mit Responsive Design benötigen im Unterschied zu Apps eine konstante Internetverbindung.

Mobile Version von Websites
Eine optische Art von „App“ ist eine für mobile Endgeräte ausgegebene „app-ähnliche“ Webseite. Das CMS wird dahingehend ausgebaut, dass zusätzlich zur Desktop-Version eine separate mobile Version ausgeliefert werden kann, eine Layout-Version, welche ausschließlich auf mobilen Endgeräten läuft. Auch die Inhalte können anders sein als bei der normalen Desktop-Version. Das Layout und das Design werden für einen Hochformat-Display generiert. Hier gibt es aber Einschränkungen, da nicht jedes einzelne Display-Format aller verfügbaren mobilen Geräte gerendert werden kann. Auch einzelne Funktionen können für die mobile Version der normalen Webseite anders programmiert werden. Im Gegensatz zu einer App, bei der die Daten lokal auf dem mobilen Device gespeichert werden können, benötigte eine mobile Version einer Webseite konstante Internetverbindung.

Wofür werden mobile Apps benötigt?
Apps bilden die Basis der heutigen Mobilgeräte. Mit Apps kann man jederzeit und überall kommunizieren, recherchieren, sich informieren, navigieren, einkaufen, bezahlen und Medien konsumieren und produzieren kann. Eine App kann eine Anwendung für sich sein, ohne Webseite. Die Daten sind nur auf dem mobilen Endgerät gespeichert.

Mögliche Anwendungen mit Apps:

  • ein Produkt zusätzlich bewerben
  • eine weitere Dienstleistung anbieten
  • eine Onlineshop-App vertreiben
  • Kundenanfragen in einer App abwickeln
  • Übersetzungen eines Produktes oder einer Dienstleistung
  • ein Spiel anbieten
  • Ernährungsberatung
  • Herzfrequenzmessungen
  • Gesundheitstipps
  • und vieles mehr...
Ein Blick in den iOS App Store sagt alles: die Anzahl der Anwendungen für Apps nimmt stetig zu. Apps sind auch deshalb so beliebt, weil sie auf dem mobilen Gerät autonom funktionieren und auch Funktionen des Devices selber ausführen können. Gerade die Nutzung von Betriebssystem-Funktionen ist ein wichtiger Faktor für noch ungeahnte Anwendungen. Apps sind auch offline verfügbar und somit sehr schnell. Oft werden Datentransaktionen auf einen späteren Zeitpunkt verlegt. So wird die Anwendung nicht durch schlechte Datenverbindungen verlangsamt.

In jedem Fall ist es wichtig, vor der Realisation und als Grundlage für die technische Spezifikation eine genaue Anforderungsanalyse zu erstellen. Dabei lohnt sich auch ein Vergleich mit bereits bestehenden Anwendungen. Ebenso sollten die Benutzergruppen festgelegt werden, sodass unterschiedliche Funktionen und Berechtigungen je Nutzergruppe geplant werden können. Dazu gehören beispielsweise Administratoren, (un-)registrierte Nutzer oder Abonnenten. 

Neben der Konzeption für die Anwendung basierend auf den Anforderungen je Nutzergruppe, sollte auch schon früh bekannt sein, welche Inhalte verfügbar sind oder welche Inhalte generiert werden sollen. Basierend auf diesen Anforderungen kann eine genauere technische Spezifikation erfolgen, die als Grundlage für eine Kostenschätzung dient.

Eine App-Erstellung bedeutet in der Regel relativ hohen Entwicklungsaufwand. Apps müssen über separate Infrastrukturen verfügen. Webtechnologien sind in der Regel nicht einsetzbar. Um die App auf möglichst vielen Geräten und Betriebssystemen zur Verfügung stellen zu können, kann eine Cross-Plattform-Entwicklung realisiert werden.

Apps für iOS und Android
Mit einer App können Inhalte auf Mobilgeräten verwaltet werden. Die Nutzung von Apps ist in den letzten Jahren gestiegen. Apps ermöglichen die sehr effiziente Nutzung innerhalb eines bestimmten Anwendungsbereiches. Die App kann auch nur einen kleinen Bereich einer Webseite repräsentieren – oder ganz davon abgekoppelt sein.

Eine App bietet neben der optimierten Anzeige zusätzliche Funktionen, die auch Funktionen des Betriebssystems des mobilen Gerätes sein können. Damit lassen sich interessante Nutzerinteraktionen implementieren.

App Design
Das Design trägt wesentlich zum Erfolg einer App bei. Es ist nicht nur ein optisches Kriterium, sondern es zeigt auch die Qualität der Usability. Für das Designs spielt der Inhalt und dessen Platzierung eine wesentliche Rolle. Zudem orientieren Sie Benutzer auch an ähnlichen, bereits erfolgreichen Apps. Auch die Integration von Funktionen können die Usability positiv beeinflussen (oder stören), je nachdem wie und in welchen Abläufen Funktionen angewählt werden können. Usability und Design hängen voneinander und im besten Fall werden Usability und Design gegenseitig optimiert.

App Programmierung
Ganz zu Beginn steht der Entscheid an, ob eine native oder hybride App entwickelt werden soll. Nicht zuletzt ist dies auch eine Kostenfrage. Aufgrund der Komplexität ist eine App-Entwicklung meist ein teureres Unterfangen als eine reine Webentwicklung. Meist werden die Kosten für eine App zu tief veranschlagt. Zudem speilen nicht nur die reinen Entwicklungskosten eine Rolle, sondern auch die Kosten für Wartung und Updates. Deshalb sollte eine Gesamtkostenbetrachtung auf mehrere Jahre Laufzeit erstellt werden. Individuelle App-Entwicklung ist voll auf die Anforderungen des Kunden ausgerichtet. Code von der Stange gibt es nicht. Zudem ist es auch entscheidend für den langfristigen Erfolg einer App, die richtigen Technologien einzusetzen – und diese werden ebenfalls stetig weiter entwickelt. Dies ist ein wesentlicher Faktor für die Investition in die Zukunft. Dank modernen Anwendungen wie Headless, Microservices und Cloud Computing können Daten für verschiedene Kanäle ausgegeben werden. Damit können heute Apps in ein Gesamtkonzept integriert werden, mindestens, was die Datenhaltung und die Ausgabe von Daten betrifft.

Wie entwickelt sich die App-Nutzung?
Die Nutzung von Smartphones verspricht ein starkes Wachstum für die Zukunft. Die Anzahl und die Art der Anwendungen sind in den letzten Jahren gestiegen. Auch Anwendungen, die eine Internetverbindung erfordern, werden immer mehr mit mobilen Geräten genutzt, da die Netz-Abdeckung höher, die Verfügbarkeit von Wireless grösser ist und die Kosten für Internetverbindungen gesunken sind. Eine mobilfähige Website und Responsive Design sind heute Standard. Dennoch bleibt es eine konzeptionelle Entscheidung, nebst einer Webseite auch eine App zu entwickeln. Denn mit einer App können neue Zielgruppen erschlossen oder gar neue Produkte oder Dienstleistungen etabliert werden.

 

App-Entwicklung 

Allgemein betrachtet kann eine Applikation jede Art von Anwendung sein. Eine Applikation lässt sich nicht von der Hardware, den physischen Bestandteilen eines Computers oder eines mobilen Gerätes trennen, denn die Applikation wird auf Basis des Betriebssystems auf dem Gerät ausgeführt. 

Mobile Apps
Mobile Anwendungen werden auf Mobilgeräten wie Smartphones, Tablets und “smarten” Geräten wie Smart TVs oder Autos mit integrierter Software ausgeführt. Sie laufen in der Regel autonom.

Web-Apps
Neben rein mobilen Anwendungen haben sich auch Web-Applications durchgesetzt. Sie erfordern kein manuelles Herunterladen einer „App“, sondern werden lediglich im Cache des Browsers zwischengespeichert. Web-Apps können nur eingeschränkt auf die Gerätehardware zugreifen. Sie sind mit einem Browser vergleichbar. Auch ursprüngliche Desktop-Anwendungen wie zum Beispiel Microsoft Word werden aus der Cloud immer mehr online im Browser genutzt. 


Entwicklung von Android Apps
Android ist ein Betriebssystem für Mobiltelefone und Smart TVs verschiedenster Hersteller. Die Apps werden aus Google Playstore heruntergeladen. Die Laufzeitumgebung ist Android Runtime (ART), die integrierte Entwicklungsumgebung Android Studio.

Entwicklung von iOS Apps
iOS wurde von Apple entwickelt und wird nur für Apple-Geräte benutzt. iOS ermöglicht den Betrieb von iPhones und iPads und ist kompatibel mit watchOS und tvOS für Apple Watches und Apple TVs. Apple bietet den App Store für den Download von Apps an. Die App-Entwicklung erfolgt mit der integrierten Entwicklungsumgebung XCode auf einem iOS betriebenen Gerät. Eine Kompilierung der Apps erfolgt direkt in Maschinencode. 

Native Apps
Es gibt native und hybride Mobile Apps. Eine native App wird für eine spezifische Plattform entwickelt, also für iOS separat und für Android separat. Über Google Playstore (Android Apps) oder den Apple App Store (iOS Apps) erfolgt der Download auf die entsprechenden Geräte. Die Entwicklung und Distribution von nativen Apps sind aufwändig und teuer. Deshalb werden nur noch bei grossen Projekten unterschiedliche Apps für die verschiedenen Betriebssysteme programmiert.

Internet of Things (IoT) im Marketing

Ansätze von Internet of Things im Digital Marketing
Unabhängig davon, ob es um Online Marketing, Omnichannel Marketing oder Digital Marketing geht – es ist eine Herausforderung, die richtige Botschaft im richtigen Zeitpunkt am richtigen Ort an die Konsumenten zu übermitteln. Unter IoT versteht man identifizierbare Objekte, die über das Internet miteinander vernetzt sind.

Soll eine Botschaft oder Werbung nicht mehr als nervig oder irrelevant angesehen werden, sondern mehr wie eine nette Empfehlung, wird Internet of Things ein Thema im Marketing. Internet of Things ist klar Technologie getrieben. Deshalb orientieren sich die neuen Formen der Kommunikation auch an Technologien wie RFID (Radio Frequency Identifikation) oder NFC (Near Field Communication). Mit der Verbreitung von IoT Geräten für Konsumenten wird IoT zum Hype.

IoT Geräte können wir schon heute überall finden, obwohl wir sie eigentlich gar nicht merken. Es sind Geräte, die unseren Alltag mit neuster Technik erleichtern, wie zum Beispiel Smart Thermostats, Connected Autos, Activity Trackers, Smart Outlets oder Tracking Sensors.

Produkte und IoT
Ein gutes Beispiel für Digital Marketing mit IoT ist die Haarbürste Kérastase Hair Coach, ein Produkt von L’Oreal und Withings. Das Gyroskop analysiert typische Kämmbewegungen und die dabei eingesetzte Kraft. Mit einem Konduktivitätssensor merkt die Bürste zudem, ob man sich die nassen oder trockenen Haare kämmt. Die Daten werden an eine Smartphone-App übergeben, in der dann personalisierte Haarpflege-Tipps aufbereitet werden (wobei auch der Wetterbericht, also Informationen zur Luftfeuchtigkeit mit einbezogen werden). Die Haarbürste ist mit einem Mikrofon ausgestattet, mit dessen Hilfe man Informationen abrufen kann.

Ein weiteres Beispiel ist der Kühlschrank Hub 2.0 von Samsung. Er bietet die Möglichkeit, Apps von anderen Anbieter zu integrieren. Der Kühlschrank meldet, was noch im Kühlschrank liegt, was wir wieder nachkaufen müssen und - wo WO wir dies tun können.

Hier zeigt sich, wie optimal Omnichannel Marketing mit der Integration von smarten Produkten funktionieren muss. Denn bei einer Aktualisierung der Informationen müssen die Daten nicht nur an das Gerät, sondern auch an alle anderen Kanäle übergeben werden – vom CRM über den Blog, die PIM-Lösung, die Webseite bis hin zum IoT Gerät.

Mittlerweile gibt es bereits verschiedene IoT-Plattformen. Denn diese Technologie ist datenintensiv, nicht zuletzt deshalb, weil die Geräte selbst auch Daten sammeln und lernfähig sind. Die Datenflut muss in Echtzeit bewältigt werden und zusätzlich wird mehr Flexibilität gewünscht. Analytics/Big Data-Fähigkeiten, Cloud-basierte Skalierbarkeit und der Aufbau von Microservice-Strukturen sind die aktuellen Herausforderungen von IoT.

Serverlose Funktionen eignen sich in neuen Anwendungsbereichen, wie IoT, Big Data oder künstlicher Intelligenz. Immer mehr gibt es jedoch die Möglichkeit, serverlose Funktionen zusätzlich zur Cloud, in Teilen auch lokal in selbst kontrollierten Umgebungen ablaufen zu lassen. Viele IoT-Anwendungen lassen sich ohne lokale Verarbeitungskomponenten gar nicht umsetzen. Gerade durch den IoT-Bereich wachsen Cloud- und Edge Computing immer mehr zusammen.

 

Digitales Marketing mit Progress

Progress hat in den letzten Jahren eine breite und sehr professionelle Palette an Werkzeugen und Softwaretools entwickelt. Progress geht den konsequenten Weg des Digital-Marketings in vorbildlicher Weise. Das Enterprise CMS System Sitefinity wurde um weitere, interessante Plattformen ergänzt. So richtet sich die Angebotspalette von Progress heute an alle Unternehmen, die sich vornehmen, digitales Marketing professionell, effizient und effektiv umzusetzen.

Mit den Werkzeugen von Progress erstellt man hochwertige Multi-Channel Anwendungen für iOS und Android Apps. Die Anwendungen basieren auf JavaScript Frameworks und werden aus einer serverlosen Cloud-Plattform ausgeliefert. Auch personalisierte Inhalte sind so in Omnichannel-Umgebungen realisierbar. Somit ist es möglich, mit Hilfe von personalisierten Inhalten auch in Multi-Channel Anwendungen Interessenten zu Kunden zu transformieren und die Conversion-Rate zu messen.

Dank der umfangreichen JavaScript Frameworks kreiert man kanalübergreifende, innovative Oberflächen und überzeugt Zielgruppen mit einem durchgehenden Auftritt über alle Ihre digitalen Kanäle hinweg.

Basierend auf der Erkennung von Verhaltensmustern in digitalen Marketing-Kanälen (Flood of Sensor Data-Analysen) generiert man aussagekräftige Statistiken und Prognosen, die für die Strategie und Entscheidungsfindung herangezogen werden können und auch für die dynamische Erstellung von weiteren personalisierten, zielgruppenspezifischen Inhalten verwendet werden. So wandelt man Kundenerlebnisse in profitable Entscheidungen mit Hilfe von kanalübergreifenden Geschäfts- und Verhaltens.

Mit den Entwicklertools von Progress integrieren wir für Sie die neuen Möglichkeiten des digitalen Marketings in alle Ihre Geschäftsbereiche und in alle Ihre Geschäftsfelder.

Progress

https://www.progress.com/solutions/mobility

Schnelle, native Apps mit hohem Nutzererlebnis

iOS ist das geräteübergreifende Betriebssystem für das iPhone, das iPad, Apple TV und Apple Watch. Deshalb können Apps nahtlos auf diesen Endgeräten synchronisiert werden und es braucht für die verschiedenen Endgeräte lediglich angepasste User Interfaces, um die Nutzung auf den verschiedenen Devices optimal zu gestalten. Native iOS Apps werden mit den Programmiersprachen Swift, Objective C und/oder C++ entwickelt. Android ist nach wie vor das beliebteste mobile Betriebssystem der Welt. Es gibt eine Vielzahl an verschiedenen Android Smartphones und Tablets. Und die Möglichkeiten für individuelle Einstellungen und Konfiguration der Geräte durch den Nutzer sind sehr gross.

Beide App-Welten haben Vor- und Nachteile. Native Apps können die Ressourcen der jeweiligen Plattform optimal ausschöpfen und greifen auf die gesamte Funktionalität der Geräte und Betriebssysteme zu. Ein Nachteil ist, dass native Apps lediglich für ein ausgewähltes Betriebssystem funktionieren. 

Im Gegensatz zur nativen App funktioniert eine hybride App auf allen Plattformen. Das ist möglich, weil hybride Apps mit der Standard-Codesprache C# (oder eine Kombination aus HTML5 & Javascript) programmiert werden. So funktioniert die App auf allen Betriebssystemen.

Wie programmiert man hochwertige Multi-Channel Anwendungen für iOS und Android Apps mit JavaScript aus einer serverlosen Cloud-Plattform? Wie funktioniert der Support und Unterhalt für eine native App? Normalerweise ist nicht nur die Programmierung für iOS und Android Apps aufwändig, sondern vor allem der Support und Unterhalt. Das Ziel mit Multi-Channel Anwendungen ist es, eine gleichbleibende Qualität für mobile Endgeräte, responsive Web, Chat und weitere Anwendungen auszuliefern um damit ein einheitliches Benutzererlebnis zu gewährleisten.

Progress® Mobility Solution bietet eine end-to-end JavaScript Plattform für die Programmierung von nativen Anwendungen für alle möglichen Kanäle. Mit dieser sicheren und serverlosen Cloud Plattform können viele bestehende Anwendungen und Betriebsumgebungen, welche für die Omnichannel-Anwendungen nicht geeignet sind, ersetzt werden.

Diese end-to-end JavaScript Plattform liefert native Apps aus und zwar auf einen One-Code Basis. Um diese Plattform nutzen zu können, benötigt man ganz normale Entwickler-Kenntnisse.

Was bedeutet der Begriff UX Apps?
Wie erzielt man Kunden-Bindung über Emotionen durch UX- und UI-Design? Unter User Experience (UX) versteht man alle Erfahrungen und Empfindungen, die eine Person mit einem Produkt, einem Service oder einer Software hat. Und dies in einer Multichannel-Anwendung. Das User Interface (UI) schafft Benutzerfreundlichkeit aus grafischer Sicht. Es besteht aus Grafikdesign, Branding und Front-End-Entwicklung.

Das Nutzererlebnis 
Wie lange Ihre Zielgruppe in der App verweilt und wie oft sie in die App zurückkehrt, wird stark vom Nutzererlebnis bestimmt. Das Nutzererlebnis ist somit der zentrale Erfolgsfaktor. Er besteht aus einem Mix von Inhalt, App-Funktionalität und Design. Aber auch die Performance gehört heute zum Nutzererlebnis. Mit der Progress® Mobility Solution end-to-end JavaScript Plattform werden Daten sicher und schnell ausgeliefert, auch bei komplexem Programmiercode.

Moderne, serverlose Architektur
Mit unabhängigen Microservices setzen wir Design, Entwicklung, Deployment und Skalierbarkeit auf einen neuen Standard ohne proprietäre Einschränkungen. Diese end-to-end Plattform bietet hohe Sicherheit und End-Benutzer Support

Vorteile für Ihr digitales Marketing

  • schneller Auslieferung von Inhalten und Dienstleistungen
  • tiefere Entwicklungskosten mit Nativ Script
  • erhöht das Nutzererlebnis und die Nutzerbindung mit nativen Apps
  • Benutzer erhalten schneller und gezielter die gewünschten Informationen
  • tiefere Entwicklungskosten für das Frontend (bis 60%)
  • tiefere Entwicklungskosten dank der JavaScript Technologie
  • schnellere Umsetzungszeiten („Time to Market“ bis 75% kürzer)
  • Integration von Unternehmensdaten
  • hoher Schutz für Ihre Daten

https://www.progress.com/solutions/web-experience

Erhöhung des Nutzererlebnisses mit Personalisierung

Wie erstellt man personalisierte Webinhalte in Multichannel-Anwendungen für ein noch besseres Nutzererlebnis und um die Geschäftsprozesse zu optimieren? Interessenten und Kunden wollen heute personalisierte Inhalte, die auf Ihr Interesse zugeschnitten sind – egal für welchen Kanal sie sich entscheiden. Vor diesem Hintergrund ist die Komplexität der technischen Umsetzung eine echte Herausforderung. Doch mit Progress ist es einfacher, kreative, interessante Lösungen zu realisieren, welche das Nutzererlebnis in Multichannel-Anwendungen durchgehend mit gleicher Qualität garantieren. Und dies erst noch ohne Erhöhung der Komplexität.

Im Gegensatz zu Lösungen, die durch Erhöhung der Komplexität auch teurer sind, kann mit Enterprise-Class von Progress® eine erfolgreiche Kombination aus Marketing- und IT-Knowhow realisiert werden. So können neue Inhalte und Nutzererlebnisse schnell und einfach erstellt und ausgeliefert werden. Das Marketing wird proaktiv verbessert und die Abhängigkeit von der IT für tägliche Arbeit wesentlich reduziert.

Ihre Vorteile sind
- Omni- und Multichannel Anwendungen
- erstellen von personalisierten Inhalten
- analysieren und verbessern von Kundenerlebnissen
- reduzieren der Kosten für die Erstellung von Mobile-Apps und Webseiten und deren Inhalte

Enterprise-Class von Progress® garantiert eine flinke und agile Webpräsenz. Mit einer benutzerfreundlichen Plattform und standardisierten Technologie kann man in Echtzeit in diversen Kanälen kommunizieren, Inhalte anpassen oder personalisieren. Mit Hilfe der Machine Learning Technologie werden das Engagement Ihrer Nutzer und sowohl die Konversionsrate als auch der Umsatz erhöht. Auch die Effizienz wird erhöht und die Auslieferung von Inhalten bis zu 60% schneller. Nebst Zeitersparnis bei der Inhaltserstellung sind auch die erhöhte Sicherheit und eine stabile Plattform für das Deployment die relevanten Erfolgsfaktoren. Mit der Enterprise-Class Plattform von Progress® werden Inhalte mehrsprachig in Multichannels ausgeliefert, die Flexibilität wird erhöht und die Übersicht verbessert.

https://www.progress.com/solutions/modern-ui

 

Innovative Benutzeroberflächen (UI) über alle Kanäle hinweg

Das Nutzererlebnis ist ein Treiber für den Erfolg einer modernen App. Mit einzigartigen, intuitiven und benutzerfreundlichen Oberflächen werden Erwartungen übertroffen. Die Entwicklung einer geeigneten und funktionierenden Benutzeroberfläche ist mit mehr technischen Herausforderungen verbunden als eh und je. Die Menge an digitalen Berührungspunkten sowie neue Entwicklungsumgebungen und Architekturen verkomplizieren die Entwicklung moderner Benutzeroberflächen. In letzter Zeit findet jedoch eine Standardisierung der Entwicklerframeworks statt – und zwar über alle Bereiche der Unternehmen hinweg. Mit Progress®Modern UI ist es dennoch einfacher geworden, denn Progress bietet damit umfassende Entwickler-Werkzeuge, um kanalübergreifende Nutzererlebnisse zu schaffen. Eine breite Palette an Komponenten-Bibliotheken, die sowohl .NET als auch JavaScript Frameworks umfassen, können heute für die Entwicklung eingesetzt werden und sind Wegbereiter für die Zukunft. Damit ist es möglich, ein konsistentes Look & Feel zu realisieren, egal, welches Medium die Zielgruppe nutzt.

Mit diesen hunderten von Komponenten, mit out-of-the-box Oberflächen, unlimitierten Möglichkeiten der Individualisierung lassen sich einzigartige Nutzererlebnisse realisieren und in verschiedene Kanäle integrieren.

 

https://www.progress.com/solutions/cognitive-predictive-maintenance

 

Der Schlüssel zu operationeller Excellence: Erkennung und Vorhersage von Anomalien

Die Flut von Daten, die alle Geräte erzeugen, müssen analysiert und ausgewertet werden. Die IoT Technologie (Internet of Things) hilft, ein eigenes Anwendungskonzept zu erstellen (Proof of Concept). Progress unterstützt hier mit einer IIoT Research License. Damit kann ein Unternehmen einen Mehrwert aus der Datenflut generieren, indem die Daten von Geräten, Maschinen für Auswertungen und Machine Learning genutzt werden. So können sensorische Daten in intelligente Aktionen gewandelt werden.

Maschinen und Geräte erzeugen massenhaft Daten, die ein extremer Mehrwert für das Unternehmen sein können. Es braucht Machine Learning, um aus diesen Daten einen Nutzen für das Management und die Organisation zu erzielen. Die Progress® Cognitive Predictive  Maintenance Solution automatisiert Data Science (die Analyse von Massendaten), um für die Organisation eine ausgezeichnete Kontrolle über Massendaten zu erzielen.

Progress® Cognitive Predictive Maintenance Solution
Die Progress® Cognitive Predictive Maintenance Solution nutzt eine patentierte Meta-Learning-Anwendung, für die Erkennung und Vorhersage von Anomalien und um diese Informationen für das Data-Science zur Verfügung zu stellen.

Mit Hilfe von Progress® Cognitive Predictive ist es möglich:

  • Downtime zu reduzieren durch geplanten Unterhalt
  • unbenkannte Benutzer zu lokalisieren und identifizieren
  • unbekannte Fehler zu lokalisieren
  • jedes Asset zu analysieren
  • die Data-Science Effizienz zu erhöhen
  • mehr Informationen für strategische Entscheide zu generieren
  • komplexe Aufgaben im Distributionsprozess  zu lösen
  • die Uptimezeit zu optimieren
  • die Auslastung zu verbessern
  • die Qualität zu optimieren
  • die Effizienz des Systems zu optimieren (Overall Equipment Effectiveness, OEE)

Dank der Erkennung von künftigen Veränderungen können Informationen frühzeitig angepasst werden. Dies gilt auch in Bezug auf die technische Laufzeitumgebung.

https://www.progress.com/datarpm

 

Erkennung und Vorhersage von Anomalien

Die Flut von sensorischen Daten, die alle Geräte erzeugen, können mit Progress gefasst werden. Sie können einen grossen Mehrwert für das Unternehmen sein. Die auf diesen Daten basierende Erkennung und Vorhersage von Anomalien kann Downzeiten verhindern und die Uptime-Qualität verbessern. Die Qualität der Services wird optimiert und die Auslastung verbessert.
Bei businesskritischen Anwendungen lohnt es sich, Progress® Cognitive Predictive Maintenance Solution einzusetzen, um Umsätze zu erhöhen und die Effizienz der Betriebsumgebung zu verbessern.

https://www.progress.com/corticon

 

Fundierte Entscheidungen für profitable Geschäftsmodelle

Corticon ermöglicht es der IT, Businesslogik ausserhalb einer Applikation zu nutzen. Progress® Corticon® ergänzt bestehenden Anwendungen mit raffinierten und automatisierten Entscheidungsprozessen bei gleichzeitiger Reduktion des Entwicklungsaufwandes und iterativer Änderungen.

Corticon Geschäftsmodell Studio 
Progress® Corticon® (Server) besteht aus dem „Geschäftsmodell Studio“, in welchem die Regeln definiert werden. In einen eigenen Interface können Modelle nach Businesslogik getestet und verifiziert werden. Hier können auch hochentwickelte Analysetools verwendet, ein Anwendungsfall-basiertes Testing und Szenario-basierte Modelltests durchgeführt werden. Zudem steht ein Template-basiertes Reporting für die Dokumentation und das Audit zur Verfügung.

Entscheidungsplattform 
Ohne eine teure Datenintegration und ohne Middleware oder ohne komplexes SQL Coding werden mit dem Enterprise Data Connector des Corticon Servers Daten aus allen möglichen Applikationen des Unternehmens für eine ausgeklügelte Entscheidungsplattform aufbereitet und zugänglich gemacht. Der Corticon Server mit Corticon Studio skaliert Daten basierend auf definierten Modellen und Testing-Anwendungen in eine verdichtete Darstellung als Entscheidungs-Ebene für strategische oder taktische Entscheide auf der Grundlage Ihrer Geschäftsanforderungen.

Warum Corticon?
Progress Corticon kann einfach bedient werden, dennoch ist Corticon sehr mächtig und liefert absolut genaue Entscheidungsdaten. Corticon reduziert die Komplexität der unterschiedlichsten Software-Anwendungen (Applikationen) ohne Begrenzung von Benutzern, Performance-Einschränkungen, Plattform- oder Sprach-Limitationen. Mit einem automatisieren und performanten Entscheidungsmanagement werden die Unternehmensstrategie schneller und gezielter umgesetzt und die Softwareanwendungen schneller mit Änderungen und neuen Inhalten bedient. Mit Progress Corticon wird das gesamte Unternehmen in die Zukunft geführt und gleichzeitig die IT von fast unlösbaren Aufgaben entlastet. Corticon bietet eine intuitive Benutzeroberfläche mit individuell konfigurierbaren Kalkulationstabellen. Manager und Entscheidungsträger können damit Entscheidungsgrundlagen erarbeiten – ohne dass eine einzige Zeile Prrogrammcode geschrieben weden muss.

Performance 
Progress Corticon bietet eine so hohe Performance, dass in Millisekunden Auswertungen von Millionen von Transaktionsdaten pro Tage verfügbar sind. Dies ist dem Design-Time-Inferencing™ (DeTI) möglich - ein Algorithmus, der in Corticon eingebaut ist. Damit lassen sich die Linearität der Unternehmendaten skalieren, auch wenn die Geschäftsmodelle sich ändern oder komplexer werden.

Genauigkeit
Die Integrität der Corticon Berechnungsmodelle wird duch ein Diagnose Tool sicher gestellt. Damit kann man neue Regeln testen und die Resultate verifizieren, Probleme oder Konflikte aufzeigen ohne zu befürchten, dass falsche oder irreführende Daten und Ergebnisse angelegt werden.

 

https://www.progress.com/nativescript

 

Elegante, native Multichannel (cross-platform) Mobile Apps

Mit einer einzigen Code-Basis, das heisst mit Hilfe der nativen App-Entwicklungsumgebung, lassen sich performante und benutzerfreundliche Apps für beide Plattformen programmieren: für iOS und Android. Die gängigen Technologien für die Webentwicklung wie JavaScrip, Angular, React, GraphQL, node.js, HTML/CSS leisten heute bessere Ergebnisse als die plattformspezifische App-Entwicklung. Und: es sind alles OpenSource Technologien, ohne Lizenzen nutzbar. Hier schliesst sich der Kreis, denn schon ganz zu Beginn der webbasierten Anwendungen war JavaScript die Basis-Technologie.

Gartner Magic Quadrant 
Im bekannten Gartner Magic Quadrant (Benchmark für Software) wurde Progress 2019 als “Leader First Ever” positioniert. Und in der Tat: Progress ist der führende Anbieter von zukunftsweisender Software. Begonnen hat das ursprünglich mit Telerik und den weltweit in der Softwareentwicklung eingesetzten Telerik-Bibliotheken. Progress bietet heute Anwendungen für die plattform- und kanalübergeifende Distribution und Analyse von Inhalten (Multiexperience Development Platforms).

Gartner Magic_Graif

NativeScript
Dieses Tool wurde von Progress für die nativen App-Entwicklung hervorgebracht. NativeScript ist ein OpenSource Entwickler-Framework, welches freien Zugang direkt zur nativen App-Entwicklung und Plattform Schnittstelle bietet. Diese Framework beinhaltet Komponenten von JavaScript, TypeScript oder Angular. NativeScript ermöglicht eine signifikante Vereinfachung und Verbesserung beim Coding für den Austausch von Inhalten in Web- und App-Applikationen.

Mit dieser Technologie können native, plattformübergreifende mobile Anwendungen mit JavaScript oder Typescript Applikationen für Android und iOS geschrieben werden. Mit NativeScript wird die App mit der gleichen Technologie wie die Website und die Web App entwickelt. NativeScript unterstützt Vue.js und vereinfacht die Entwicklung durch das Benutzen von JavaScript.

NativeScript in Kombination mit Kinvey
Mit diesen beiden Tools können native mobile Multichannel-Apps auf reiner JavaScript Codebasis entwickelt werden – mit Zukunftspotenzial. Denn mit der JavaScript-Technologie verfügt man über eine Werkzeugkette, die auf alle Seiten Verbindungen zulässt. Im Interface von NativeScript kann jede Funktion erstellt, getestet, gebildet und auf die mobile Applikationen distribuiert werden – und dies mit Hilfe der CLI Technologie. CLI heisst Command Line Input. CLI erlaubt, Operationen mit Text-Input auszuführen. 

Früher, in den 60-er Jahren, was dies die einzige bekannte Art, wie „dumme“ Terminals mit Computern kommunizieren konnten. Später, in den 70-er und 80-er Jahren wurde „Command Line Input“ von Unix Systemen, MS-DOS und Apple DOS verwendet. Und heute, mit grafischen Benutzeroberflächen (GUI) nutzen die wenigsten User  Command Line Input Interfaces (CLI).

Doch wird diese Technologie noch heute dazu genutzt, um Computer zu konfigurieren, Software zu installieren – und um Funktionen zu nutzen, die im grafischen Interface (Benutzeroberfläche) nicht verfügbar sind. 

NativeScript, Visual Studio und Webstorm/IntelliJ
Die mächtige NativeScript Command Line Input Benutzeroberfläche bietet jede Funktion für die Programmierung, Kreation, das Testing, den Build und die Distribution von Applikationen in mobilen Anwendungen mit CLI.

NativeScript verfügt über eine offiziell unterstützte Integration von Microsoft Visual Studio Code und Webstorm/IntelliJ, welche von einer breiten Community unterstützt und entwickelt wird. Diese Kombination macht NativeScript einzigartig und wir als langjährige Anwender von Microsoft Visual Studio finden uns sofort zurecht.


Sidekick 
Mit NativeScript  können direkt Sidekick Templates genutzt werden. Mit Sidekick können viele Funktionen aufgerufen und genutzt werden, die für die App-Entwicklung notwendig sind, wie Templates, Plugins, Cloud-Build-Prozesse und Debugging. Dies um den nativen Code zu optimieren und die Performance der mobilen Anwendung zu verbessern.

Benutzeroberfläche für NativeScript
NaticeScript  bietet eine ganze Suite von freien Komponenten für die native Entwicklung von iOS und Android App’s und hält eine API für die Cross-Plattform-Programmierung zur Verfügung. Das Progress Native-Team unterstützt die Eigenentwicklung von nativen Mobile-Applikationen proaktiv.

 

Moderne Apps gewähren moderne Benutzererfahrungen

Die nächste Generation von nicht vorhandenen, modernen Geschäftsanwendungen (Business Applications) wird spürbar sein und sich kritisch auf den Geschäftserfolg auswirken: denn die Zukunft braucht adaptierbare, intelligente und verbindende Systeme. Eigenschaften, welche durch die klassische Applikationsentwicklung nur bedingt erfüllt werden können. Mit NativeScript können wertvolle, zielgruppenspezifische Benutzererfahrungen umgesetzt werden, welche wie erwähnt in Zukunft das Mass für die erfolgreiche Nutzung von guten Apps und mobilen Anwendungen ist.

 

Cognitive Cloud

Hohe Produktivität bei der Entwicklung mit Kinvey

Kinvey unterstützt die Business-Innovation mit digitalen Prozessen, Data Science und Entwickler-Tools (DevOps). Mit Hilfe der modernen, Cloud-basierten Plattformen ist es einfacher, mir der rasanten Entwicklung des digitalen Business mitzuhalten. Und dies erst noch ohne eine grosse Anzahl an spezialisierten Programmierern. Mit Kinvey können digitale Produkte und Services ohne grossen Programmieraufwand dem Unternehmen entsprechende realisiert werden. Die serverlose Cloudlösung unterstützt Businessprozesse, erhöht die Produktivität und liefert Inhalte an mobile Geräte, Webanwendungen, Chats, Webapps und Apps aus.

Warum Progress Kinvey?

Kinvey bietet neue serverlose Anwendungen aus der Cloud-Plattform um Unternehmensinhalte in Multichannel Anwendungen einheitlich und durchgängig auszuliefern. Somit können kanalübergreifende Benutzer- und Kundenerlebnisse geschaffen werden. Mit Kinvey werden hochklassige Anwendungen und Cross-Awendungen realisiert (Web zu Native-App, iOS und Android, PWAs und Chat).

Open Source und Standardisiert
Die Open Source Entwickler Frameworks von Progress sind populär und ermöglichen kontinuierliche Innovation und Integration, kostengünstig und sehr flexibel.

Die Unternehmensweite Bedeutung
Multichannel-Applikationen betreffen nicht nur die Webseite eines Unternehmens, sondern alle Applikationen, mit denen Interessenten, Lieferanten und Kunden mit dem Unternehmen interagieren.

 

Hohe Produktivität bei der Entwicklung mit Kinvey

Kinvey unterstützt die Business-Innovation mit digitalen Prozessen, Data Science und Entwickler-Tools (DevOps). Mit Hilfe der modernen, Cloud-basierten Plattformen ist es einfacher, mir der rasanten Entwicklung des digitalen Business mitzuhalten. Und dies erst noch ohne eine grosse Anzahl an spezialisierten Programmierern. Mit Kinvey können digitale Produkte und Services ohne grossen Programmieraufwand dem Unternehmen entsprechende realisiert werden. Die serverlose Cloudlösung unterstützt Businessprozesse, erhöht die Produktivität und liefert Inhalte an mobile Geräte, Webanwendungen, Chats, Webapps und Apps aus.

Warum Progress Kinvey?

Kinvey bietet neue serverlose Anwendungen aus der Cloud-Plattform um Unternehmensinhalte in Multichannel Anwendungen einheitlich und durchgängig auszuliefern. Somit können kanalübergreifende Benutzer- und Kundenerlebnisse geschaffen werden. Mit Kinvey werden hochklassige Anwendungen und Cross-Awendungen realisiert (Web zu Native-App, iOS und Android, PWAs und Chat).

Open Source und Standardisiert
Die Open Source Entwickler Frameworks von Progress sind populär und ermöglichen kontinuierliche Innovation und Integration, kostengünstig und sehr flexibel.

Die Unternehmensweite Bedeutung
Multichannel-Applikationen betreffen nicht nur die Webseite eines Unternehmens, sondern alle Applikationen, mit denen Interessenten, Lieferanten und Kunden mit dem Unternehmen interagieren.

 

Serverless Computing

Dank der Virtualisierung liessen sich grosse Fortschritte beim Betrieb von Infrastrukturen erzielen. In der Cloud wird die Flexibilisierung durch Microservices noch weiter voran getrieben. Eine Technologie, die durch leichtgewichtige Container möglich wurde. Als bei Amazon 2006 die ersten drei Amazon Web Services veröffentlicht wurden, war dies der Start einer immer weiterführenden Entwicklung von unterschiedlichsten Cloud-Diensten. Inzwischen bietet allein AWS über neunzig Dienste an. 

Serverlose Anwendungen aus der Cloud?

Dank der Virtualisierung lassen sich serverlose Anwendungen realisieren. Dabei machen leichtgewichtige Container Microservices möglich, welche Services ohne Server umzusetzen. Das bringt im Betrieb den grossen Vorteil, dass man sich weniger um die Infrastruktur zu kümmern hat. Private- und Public-Cloud wachsen immer mehr zusammen. Sie sind auch miteinander kombinierbar. Dies jedoch oft auf der Basis des kleinsten gemeinsamen Nenners.

Microsoft Azure, IBM Bluemix oder Google Cloud und Amazon AWS bietet:

  • Infrastructure as a Service (IaaS)
  • Platform as a Service (PaaS)
  • Software as a Service (SaaS)
  • Container as a Service (CaaS)
Wie entwickelt sich die Computerinfrastruktur weiter?
Die Grenzen zwischen klassischem Serverbetrieb und Serverless Computing verschwimmen spätestens mit der Verwendung von Container as a Service (CaaS). Erstmals 2014 wurde bei Amazon Web Services AWS Lambda vorgestellt. Damit begann das Zeitalter des Serverless Computing

Was ist eine serverlose Datenverarbeitung?
Der Begriff „Serverlos“ bedeutet nicht, dass für die Ausführung von Funktionen gar keine Server mehr benötigt werden. Der Unterschied liegt zum einen darin, dass die komplette Verantwortung für Wartung oder Skalierbarkeit beim Anbieter des Diensts liegt.

Entwickler müssen sich nicht mehr um betriebstechnische Themen kümmern und können sich bei Serverless rein auf das Programmieren der Funktionen konzentrieren. Wichtig jedoch ist, dass serverlose Funktionen gut zu skalieren sind und auf Ereignisse reagieren können. Deshalb darf eine Funktion keinen eigenen Zustand haben. Sie muss weitere Backend-Dienste nutzen (Function as a Service).

Mit AWS Lambda, Amazon API Gateway, Amazon Kinesis, Amazon S3, und Amazon DynamoDB kann man verschiedene Echtzeit-Datenverarbeitungssysteme sowie serverlose Webanwendungen und Backends erstellen und so Web-, Mobil-, IoT- und Chatbot-Anfragen bearbeiten. Ein weiteres Einsatzgebiet ist die Echtzeitverarbeitung von Big Data Streams oder auch die Batchverarbeitung mit MapReduce-Jobs. API-Gateway verwaltet alle eingehenden und ausgehenden Anfragen. Diese Content Delivery Networks (CDN) haben das Ziel, statischen Content möglichst nah und schnell an den jeweiligen Aufrufer auszuliefern. 

 

Preiskalkulation FaaS - Function as a Service
Der Vorteil von FaaS ist, dass wirklich nur der reine Verbrauch abgerechnet wird. Normal wird auch ein Grundpreis für die Bereitstellung wie bei den anderen XaaS-Angeboten belastet. Oft ist es auch Mischpreis konfrontiert, da FaaS auch noch andere Dienste nutzt. Je nach Nutzung, ist FaaS dann auch nicht immer die günstigste Variante, sondern es hängt ganz vom Anwendungsfall und dessen Nutzungsprofil ab. Das macht die Preiskalkulation schwierig. Dafür muss man sich bei FaaS nicht um Wartung, Aktualisierung oder Skalierung dieser Dienste kümmern – Kostenfaktoren, die bei normalen V-Servern anfallen.

Serverless-Computing-Architektur
Mit Events sind alle möglichen Funktionen gemeint – vom Start eines Batchprogramms bis hin zu komplexen Anfragen, bei denen auch weitere Dienste aufgerufen werden. Wenn eine Funktion, die aufgrund eines Ereignisses in einem bestimmten Kontext gestartet wird, kann zeitgleich eine Funktion, mit einer anderen Logik oder auch andere Backend-Diensten (Backend as a Service) aktiviert werden. Das Ergebnis dieser weiteren aufgerufenen Dienste wird dann asynchron zurückgeliefert. In der Regel werden serverlose Daten in der gleichen Programmiersprache erstellt. Diese muss aber nicht der Programmierung der Betriebsumgebung entsprechen. Jedoch sind die genutzte API, die Events und auch die Deployment- und Überwachungsprozesse Plattform-spezifisch.

Serverless Application Model (SAM CLI)
AWS SAM erlaubt es, serverlose Applikationen wie Machine-Learning, Spracherkennung, Texterkennung, Bilderkennung zu erstellen und zu testen – mittlerweile sogar lokal. Im Zentrum der meisten serverlosen Apps und Architekturen steht meist Lambda, der Event-getriebene Computing-Service von AWS mit der grafischen Lambda-Console. Lambda-Funktionen in der Regel per CLI und vorlagenbasiert bereitgestellt (AWS CloudFormation oder Terraform). Einfacher ist das Bereitstellen und vor allem das lokale Testen von Lambda-Funktionen, wenn man dazu das Serverless Application Model (SAM) verwendet.

SAM besteht aus der SAM-Vorlagenspezifikation zum Definieren der serverlosen Anwendungen und der Befehlszeilenschnittstelle AWS SAM-CLI. Die AWS SAM-Vorlagendatei orientiert sich eng an AWS CloudFormation. Das heisst, es gibt eine Kurzsyntax zum Ausdrücken von Funktionen, APIs, Datenbanken und Ereignisquellenzuordnungen. 

Amazon bietet mit SAM die Möglichkeit serverlose Anwendungen auf AWS erstellen können. Mit Serverless Application Model (SAM) kann das Paketieren, Testen und Hochladen von Lambda-Funktionen auf Amazon S3 gemanaged werden. Serverless Application Model (SAM) ist ein Open-Source-Framework um serverlose Anwendungen und die Befehlszeilenschnittstelle AWS SAM-CLI (Command Line Interface) zu nutzen. SAM besteht aus der SAM-Vorlagenspezifikation zum Definieren und Entwickeln, (lokalen) Testen und Bereitstellen von serverlosen Anwendungen. Eine AWS SAM-Vorlagendatei bietet eine Kurzsyntax zum Ausdrücken von Funktionen, APIs, Datenbanken und Ereignisquellenzuordnungen. So lassen sich die gewünschten Anwendungen definieren, mit YAML modellieren und sämtliche (serverlosen) AWS-Ressourcen definieren. Eine in YAML- oder JSON erstellte SAM-Konfigurationsdatei entspricht der Open-Source-Spezifikation für das serverlose AWS-Anwendungsmodell. Im Verlauf der Bereitstellung wandelt SAM die SAM-Syntax in CloudFormation-Syntax um und erweitert sie derart, dass Nutzer letztlich schneller serverlose Anwendungen erstellen können.

CLI Command Line Interface
Die Kommandozeile, Befehlszeile wird auch als Konsole oder Terminal bezeichnet. Je nach Betriebssystem wird die Kommandozeile von einer Shell oder einem Kommandozeilen- oder Befehlsinterpreter ausgewertet und die entsprechende Funktion ausgeführt. Das Command Line Interface ist ein Eingabebereich für die Steuerung einer Software, der typischerweise im Textmodus abläuft. Die Kommandos oder Befehle werden als Zeichenketten, teilweise als Abkürzung (z.B.: dir, ls etc.) über die Tastatur eingegeben. Ein Kommandozeilenprogramm läuft somit typischerweise mit den gegebenen Parametern einmal ab, bevor eine erneute Befehlseingabe möglich ist. Ein automatisiertes Abarbeiten mehrerer Kommandos nennt man Stapelverarbeitung (batch). 

AWS Serverless Application Repository
Serverlose Anwendungen können in der AWS Cloud gesucht, bereitgestellt und veröffentlicht werden. Dazu wird der Dienst AWS Serverless Application Repository genutzt, der in der AWS Lambda-Konsole integriert ist. Mit Kategorie-Schlüsselwörtern kann nach Anwendungen wie mobilen und Web-Backends, Anwendungen zur Datenverarbeitung oder Chatbots gesucht werden. Außerdem kann man über Name, Herausgeber oder Ereignisquelle nach Anwendungen suchen. Soll eine Anwendung verwendet werden, konfiguriert man einfach die entsprechenden Felder, die im Kontext von beispielsweise Machine Learning, Spracherkennung, Texterkennung, Bilderkennung stehen. Im Zentrum der meisten serverlosen Apps und Architekturen steht meist Lambda, der Event-getriebene Computing-Service von AWS (die grafische Lambda-Console). Programmiert man eigene Anwendungen, werden Lambda-Funktionen in der Regel per CLI (Command Linde Interface) bereitgestellt.

FaaS Function as a Service
FaaS kann für jene Anwendungen eingesetzt werden, zu denen es Dienste in der Cloud gibt, wie:
  • Umcodieren von Inhalten
  • Anbindung der Backend-Dienste
  • spezialisierte Webdienste
  • mobile Anwendungen
  • Internet-of-Things-Anwendungen

FaaS lässt sich mit kognitiven Diensten kombinieren, wie Sprach- oder Bilderkennung.

Anwendungen mit Lambda-Funktionen

Mit Lambda von Amazon AWS kann man serverlose Webanwendungen und Backends erstellen: Die Anwendungen reichen von Web-, Mobil-, IoT- und Chatbot- und weiteren Diensten. Die PaaS-Dienste von AWS führen dann diese Operationen aus. Und S3-Buckets werden für die Ablage von Medieninhalten genutzt. Die Daten werden in DynamoDB gespeichert. Der Dienst Cloud Search indiziert neue Daten stellt diese über Suchabfragen wieder zur Verfügung. Und um Push-Nachrichten für die jeweiligen mobilen Geräte zu erzeugen kann Simple Notification Service (SNS) genutzt werden. Bestimmt werden weitere Dienste und Services folgen. So können mit Lambda-Funktionen eingehende und ausgehende Daten vorverarbeitet werden um damit auf entsprechende Ereignisse zu reagieren. 


Die Cloud und die kleinen Geräte: Edge Computing

Mit Edge Computing werden Daten nicht in einem zentralen Data-Warehouse verarbeitet, sondern dort, wo sie generiert werden: an der Netzwerkperipherie. Edge Computing stellt eine verteilte, offene IT-Architektur dar und schafft so die Grundlagen für Mobile Computing und IoT-Technologien (Internet der Dinge). Beim Edge Computing werden die Daten vom Gerät, Device oder der mobilen Anwendung selbst verarbeitet. Edge Computing ermöglicht damit die Beschleunigung von Datenverarbeitung in Echtzeit ohne Latenzzeiten. Edge Computing ermöglicht eine effiziente Datenverarbeitung von großen Datenmengen an der Quelle (im Endgerät). Für vertrauliche Daten ergibt sich ein zusätzliches Maß an Sicherheit, da Daten verarbeitet werden können, ohne sie in eine Public Cloud verlagern zu müssen.

Die kleinen Geräte werden immer leistungsfähiger und sie können auch eine gewisse Zeit ohne Netzverbindung weiterarbeiten. Es lassen sich Sicherheitsanforderungen erfüllen, welche die personenbezogene Weiterverbreitung und Übertragung von sensiblen Daten in der Cloud verbietet. So ist optimaler Schutz für eine datenintensive, datensensible und zeitkritische Verarbeitung gewährleistet. OpenWhisk von IBM zum Beispiel ist unter einer Open-Source-Lizenz veröffentlicht und basiert auch ausschließlich auf Open-Source-Produkten, wie Docker, Consul, CouchDB, nginx und Kafka. Bald soll auch Kubernetes unterstützt werden. Edge Computing eignet sich bei Daten, die einen hohen Datenschutzbedarf haben und bei denen die Kombination zwischen lokaler und entfernter Verarbeitung sinnvoll ist. Mit AWS Greengrass können kompatible IoT-Geräte AWS-Lambda-Funktionen in Python lokal unter Linux ausführen. AWS Greengrass besteht aus der Ablaufumgebung Greengrass Core und dem erweiterten AWS IoT Device SDK für C++. Neben OpenSSL wird auch das MQTT-Protokoll unterstützt. Als lokale Datenbank wird SQLite verwendet. So lassen sich Datenverarbeitungs-, Messaging-, Caching- und Synchronisierungsfunktionen lokal ausführen.

Die Azure-Welt

Die Azure Functions Runtime läuft als Hyper-V-Container. Für Kubernetes gibt es mit Fission ein eigenes kleines Serverless Framework, das Node.js, Go, C# und PHP unterstützt.  Mit Spring Cloud Function (Spring Boot) gibt es einen Adapter für Apache OpenWhisk und AWS Lambda. So können lokal serverlose Anwendungen entwickelt und dann in die Cloud deployed werden. Das bekannte Serverless Framework erleichtert das Deployment und Testen von Lambda-Diensten und unterstützt nicht nur AWS Lambda, sondern auch Azure Functions, OpenWhisk und Google Functions. 

Was und wofür ist Kubernetes?
Google hat das Kubernetes-Projekt 2014 als Open-Source-Projekt zur Verfügung gestellt. Kubernetes ist eine portable, erweiterbare Open-Source-Plattform. Damit lassen sich Container-basierte Arbeitslasten und Services verwalten und die Ausführung von Produktions-Workloads in großem Maßstab realisieren. Auch die deklarative Konfiguration und die Automatisierung lassen sich leichter umsetzen. Kubernetes Dienstleistungen, Support und Tools sind weit verbreitet.

Kubernetes ist:

  • eine Containerplattform
  • eine Microservices-Plattform
  • eine portable Cloud-Plattform und vieles mehr.
Kubernetes vereinfacht und automatisiert als eine Open-Source-Plattform das Einrichten, Skalieren, Betreiben und Warten von containerisierten Anwendungen. Container-Einheiten werden zu Clustern zusammengefasst. Kubernetes bietet ein riesiges Leistungsspektrum und stellt zahlreiche Funktionen von Container-basierten Anwendungen zur Verfügung. 

Kubernetes koordiniert die Computer-, Netzwerk- und Speicherinfrastruktur für Benutzer-Workloads mit einer containerzentrierten Managementumgebung. Es kombiniert Plattform as a Service (PaaS) mit der Flexibilität von Infrastructure as a Service (IaaS). Zudem ermöglicht Kubernetes die Portabilität zwischen Infrastrukturanbietern.

Anwendungsspezifische Workflows können mit Hilfe von Kubernetes optimiert werden, um die Entwicklungsgeschwindigkeit zu beschleunigen. Mit Kubernetes werden Komponenten und Tools angeboten, welche die Bereitstellung, Skalierung und Verwaltung von Anwendungen erleichtern.

Mit Hilfe von Labels können Ressourcen nach Belieben organisiert werden. Anmerkungen ermöglichen es, Ressourcen mit benutzerdefinierten Informationen zu versehen. So können Arbeitsabläufe vereinfacht und der Status von Kontrollpunkten ermittelt werden. Die Kubernetes-Steuerungsebene basiert auf den gleichen APIs. So können Controller mit eigenen API’s programmiert werden, die von einem universellen Kommandozeilen-Tool angesprochen werden können.

Kubernetes arbeitet nicht auf Hardware-, sondern auf Containerebene. So sind allgemein anwendbare und PaaS-ähnliche (Platform as a Service) Funktionen verfügbar wie Bereitstellung, Skalierung, Lastausgleich, Protokollierung und Überwachung. Da Kubernetes jedoch nicht monolithisch ist, sind diese Standardlösungen optional und modular erweiterbar. Kubernetes liefert die Bausteine für den Aufbau von Entwicklerplattformen. Es bietet jedoch Wahlmöglichkeiten und Flexibilität, dort wo es wichtig ist.

 

Continuous Delivery (kontinuierliche Distribution)
Kubernets löst die Aufgabe des Continuous Delivery (CD) mit Techniken, Prozessen und Werkzeugen, die den Softwareauslieferungsprozess - das Deployment – verbessern und vereinfachen. Techniken wie Continuous Integration (CI), Testautomatisierung und kontinuierliche Installation erlauben in Kombination mit agilen Methoden die Entwicklung qualitativ hochwertiger und stabiler Software. Die Automatisierung der Integrations- und Auslieferungsprozesse ermöglicht schnelle, zuverlässige und wiederholbare Deployments. Erweiterungen oder Fehlerkorrekturen können somit mit geringem Risiko und niedrigem manuellem Aufwand in die Produktivumgebung oder zum Kunden ausgeliefert werden. 

DevOps 
Für Continuous Delivery, also für kontinuierliche Integrations-, Liefer- und Bereitstellungs-Workflows (CI/CD) wird häufig eine Umsetzung mit dem DevOps-Ansatz angewendet. DevOps ist ein Prozessverbesserungs-Ansatz bei der Softwareentwicklung und Systemadministration. DevOps ist ein Kunstwort aus den Begriffen Development (englisch für Entwicklung) und IT Operations (englisch für IT-Betrieb). Mit DevOps werden die Qualität der Software, die Geschwindigkeit der Entwicklung und der Auslieferung sowie die Koordination der beteiligten Teams verbessert. Je besser die beteiligten Teams, Werkzeuge und die Infrastruktur aufeinander abgestimmt sind, desto schneller wird Software in einer besseren Qualität getestet und ausliefert. 

Orchestrierung 
Solche Komponenten können auf Kubernetes laufen und/oder von Anwendungen, die auf Kubernetes laufen, über portable Mechanismen wie den Open Service Broker angesprochen werden. Kubernetes ist auch ein Orchestrierungssystem, macht die Notwendigkeit einer fixen Orchestrierung jedoch überflüssig. Die technische Definition von Orchestrierung ist die Ausführung eines definierten Workflows: von „A, nach B, dann über C nach D“ - das heisst, der Workflow wird in einer vorgegebenen Reihenfolge ausgeführt. Kubernetes besteht demgegenüber aus einer Reihe von unabhängigen, frei komponierbaren Steuerungsprozessen. Diese flexibel einsetzbaren Steuerungsprozesse treiben zwar den aktuellen Zustand kontinuierlich in Richtung des bereitgestellten Soll-Zustandes voran. Es spielt jedoch keine Rolle, wie der Prozess von „A nach D“ kommt. Eine zentrale Steuerung ist somit nicht erforderlich. Ein System, das einfacher und flexibler zu bedienen ist.

Mit Kubernetes wird ein System:
  • leistungsfähig
  • robust
  • widerstandsfähig
  • erweiterbar
Containerisierung
Traditionell werden Anwendungen durch eine Installation auf einem Host mit dem Betriebssystempaketmanager bereitgestellt. Dies hat den Nachteil, dass die ausführbaren Dateien, Konfigurationen, Bibliotheken und Lebenszyklen der Anwendungen untereinander und mit dem Host-Betriebssystem verwoben sind und periodisch aktualisiert und aufeinander abgestimmt werden müssen. Sicherheits-Patches treiben diese Aktualisierung voran. Unveränderliche Virtual-Machine-Images könnten für Rollouts und Rollbacks erstellt werden, doch VMs sind schwergewichtig und nicht portierbar.

Neu können Container auf Betriebssystemebene und nicht auf Hardware-Virtualisierung bereitgestellt werden. Solche Container sind voneinander und auch vom Host isoliert: Sie haben ihre eigenen Dateisysteme und sie können die Prozesse der anderen Container nicht sehen. Zudem kann ihr Ressourcenverbrauch kann begrenzt werden. Container sind einfacher zu erstellen als ganze VMs. Weil sie von der zugrunde liegenden Infrastruktur und dem Host-Dateisystem entkoppelt sind, sind sie über Clouds und Betriebssystem-Distributionen hinweg portabel.

Container sind klein und schnell. In jedes Containerimage kann eine Anwendung gepackt werden. Mit dieser Technologie können unveränderliche Container-Images schon zur Build-/Release-Zeit als erst zur Deployment-Zeit erstellt werden. Jede einzelne Anwendung wird nicht mit dem Rest des gesamten Anwendungsstacks oder mit der Produktionsinfrastruktur getestet und abgestimmt -sondern Anwendung für Anwendung.

Die Generierung von Container-Images zum Zeitpunkt der Erstellung bzw. Freigabe ermöglicht es, eine konsistente Umgebung von der Entwicklung bis zur Produktion zu gewährleisten. Container sind transparenter als VMs. Die Überwachung und Verwaltung wird erleichtert, wenn die Prozesslebenszyklen der Container von der Infrastruktur verwaltet werden. Mit dem Konzept einer einzigen Anwendung pro Container ist das Deployment je Anwendung möglich.

Sofern eine Anwendung in einem Container ausgeführt werden kann, wird sie auf Kubernetes hervorragend laufen. Kubernetes unterstützt eine große Vielfalt von Workloads, einschließlich stateless, stateful und datenverarbeitender Workloads – ohne Einschränkung.


Microservices
Das unabhängige Deployment der wesentliche Vorteil von Microservices. Mit Microservices können große Projekte in kleine Einheiten aufgeteilt werden. Ein Microservice kann in die Produktivumgebung gebracht werden, ohne dass die anderen Microservices ebenfalls neu deployt werden müssen. Microservices können als einzelne Docker-Container umgesetzt werden. Mehrere solcher Container bilden dann zusammen eine Anwendung. Jeder einzelne Microservice kann eine REST-Schnittstelle haben.

Jeder Microservice kann einzeln skaliert werden. Dazu sind nur ein Load Balancer und mehrere Instanzen des Docker-Containers notwendig. Unterschiedliche Microservices können auch dann miteinander kommunizieren, wenn sie mit einer anderen Programmiersprache auf einer anderen Plattform implementiert sind. In einem Docker-Container kann schließlich fast jede Infrastruktur laufen.

Wenn ein Microservice zu viel Speicher allokiert oder die CPU stark belastet, beeinflusst das nur diesen einen Microservice. Und wenn die anderen Microservices sogar den Ausfall dieses einen Microservice tolerieren können, entsteht ein sehr robustes System. Amazon erlaubt mit Lambda [5] das Deployment einzelner in Java, JavaScript oder Python geschriebener Funktionen. Mit Microservices kann die technische Koordination auf ein Mindestmaß reduziert werden. Unabhängige Skalierung oder auch die Robustheit zählen zu den grossen Vorteilen. Microservices erlauben es, die technische Koordination auf ein Mindestmaß zu reduzieren. Die Programmiersprache, die Plattform und auch das Deployment sowie Monitoring können in jedem Microservice anders gelöst sein. Ebenso kann das Testen der einzelnen Microservices unterschiedlich gelöst werden. Microservices können erhebliche Vereinfachungen und Vorteile zur Folge haben.