Der Spielrahmen bei LinkedIn
Einführung
Wir boten Support und Beratungsdienste an und halfen ihnen, die Vorteile der Erweiterbarkeit von Play zu nutzen, um es auf ihre individuellen Bedürfnisse abzustimmen.
Über LinkedIn
LinkedIn ist ein börsennotiertes Unternehmen, das das weltweit größte berufliche Netzwerk im Internet mit über 160 Millionen Mitgliedern in mehr als 200 Ländern und Gebieten betreibt.
Das Unternehmen ist ein Lightbend-Kunde und verwendet Scala für seinen Kerngraphen des sozialen Netzwerks und andere wichtige Produktkomponenten. Sie haben auch Open-Source-Projekte auf der Basis von Scala veröffentlicht, wie Norbert, eine Cluster-Management-Lösung, und Kafka, ein verteiltes Publish-Subscribe-System. Scala ist ein Teil von Lightbends Vorzeigeprodukt, der Lightbend Platform. Kürzlich hat LinkedIn seine Nutzung der Lightbend-Plattform um das Web-Framework Play erweitert.
Herausforderungen
LinkedIn stand vor Herausforderungen mit traditionellen Java-Web-Frameworks. Zum Beispiel:
- Es dauert zu lange, eine Änderung vorzunehmen, neu zu laden und zu testen, so dass die Entwickler viel Zeit verlieren.
- Zustandsabhängige Frameworks mit Threads pro Anfrage sind schlecht und schwer zu skalieren und verschwenden Cloud-Ressourcen.
LinkedIn verwendet einige Nicht-Java-Plattformen, wie Ruby on Rails oder node.js. Der größte Teil des serverseitigen Codes ist jedoch in Java geschrieben, so dass sie ein starkes, modernes UI-Framework für Java-Entwickler benötigten.
Lösung
Das Unternehmen wandte sich an Play, eine Komponente der NashTech Platform Solution. Play ist ein modernes Framework für die JVM mit dem Schwerpunkt auf der Produktivität der Entwickler. Es unterstützt sowohl Java als auch Scala, so dass die Kunden die für ihre Situation am besten geeignete Sprache wählen können. Sie bringen reaktive Anwendungen unter Verwendung der Java-API in die Java Virtual Machine und machen es ihren Entwicklern leicht, sie schnell zu übernehmen.
Wo LinkedIn das Spiel einsetzt
LinkedIn verwendet Play als Front-End-Server für die UI-Entwicklung. Beispiele hierfür sind:
- Talent Direct, ein Tool, das Kunden dabei hilft, ihr Talent-Branding zu verbessern und die richtige Zielgruppe auf LinkedIn anzusprechen, eine Anwendung, mit der LinkedIn-Kunden Umfragen und Abstimmungen erstellen und durchführen können
LinkedIn geht davon aus, dass Play im Laufe der Zeit bei der Entwicklung neuer Funktionen auf der Website in größerem Umfang eingesetzt wird.
LinkedIn untersucht auch Play als zugrunde liegende Technologie für seine Backend-Dienste. Das Unternehmen ist dabei, seine gesamte Service-Architektur auf RESTful JSON umzustellen und sucht Play, um diesen Prozess zu unterstützen.
Schneller Code- und Test-Zyklus
Für Entwickler ist die Fähigkeit von Play, die Anwendung dynamisch neu zu kompilieren, wenn sie im Browser auf “Reload” drücken, ein entscheidender Vorteil. LinkedIn-Entwickler speichern ihre Änderungen in ihrem Editor, wechseln zum Browser und drücken auf “Neu laden”. Wenn es Kompilierungsfehler gibt, werden diese direkt im Browser angezeigt. Wenn die Erstellung erfolgreich war, wird die neue Seite angezeigt.
Diese einfache Funktion spart Entwicklern unzählige Stunden bei der Arbeit an einer Webanwendung.
Damit es schnell geht, wenn Entwickler auf “Reload” drücken, verwendet Play ausgeklügelte inkrementelle Kompilierungstechniken, um nur die Klassen neu zu erstellen, die sich geändert haben.
Erweiterbar auf benutzerdefinierte Asset-Typen
Die Hot-Reload-Funktionen von Play können erweitert werden, um neue Asset-Typen zu unterstützen.
LinkedIn hat ein REST-Framework, das Apache Avro verwendet. Java-Klassen werden aus deklarativen Datenmodellen und Endpunktbeschreibungen generiert.
LinkedIn hat mit Play eine Infrastruktur für den Aufbau dieser REST-Server geschaffen. Außerdem wurde Play erweitert, um das Hot-Reloading der Avro-Schemata zu unterstützen. Nach der Änderung eines Schemas brauchen LinkedIn-Entwickler nur auf “Reload” im Browser zu drücken, um die Java-Klassen neu zu generieren und die Anwendung neu zu erstellen. Eventuelle Fehler werden sofort im Browser angezeigt.
Das spart dem Entwickler bei jeder Änderung ein paar Minuten.
Neue Arten von Vorlagen können über das Modulsystem zu Play hinzugefügt werden. LinkedIn hat ein Play-Modul zur Unterstützung von Dust-Vorlagen implementiert. Wie immer bei Play können die Dust-Vorlagen im laufenden Betrieb geladen werden.
Asynchrone, zustandslose Skalierbarkeit
Das Play bietet zwei große Vorteile in Bezug auf die Skalierbarkeit.
Es unterstützt asynchrone Anfragen, d.h. es ist nicht erforderlich, einen Thread zu binden, während Anfragen bearbeitet werden. Anfragen können unterbrochen werden, während der App-Server auf einen externen Dienst oder eine Datenbank wartet, und dann wieder aufgenommen werden, wenn die Ergebnisse vorliegen. Dadurch wird der Speicherbedarf für eine ausstehende Anfrage erheblich reduziert (in der Regel verbraucht die Thread-Plattform weitaus mehr Speicher als der Code, der die Anfragen bedient).
Im Rahmen des Integrationsprozesses bei LinkedIn wurde die Java-API von Play für die Bearbeitung asynchroner Anfragen verbessert, und die Änderungen wurden in die Hauptcodebasis von Play und die NashTech Platform Solution integriert.
Play hat ein zustandsloses Design, d. h. es ist nicht auf einen serverseitigen Sitzungsstatus angewiesen. Stattdessen wird der Sitzungsstatus in einem Cookie gespeichert und steht somit jedem Serverknoten zur Verfügung, der eine Anfrage erhält.
In einer zustandslosen Architektur ist die Erweiterung der Kapazität so einfach wie das Hinzufügen weiterer Anwendungsserver. Play macht dies standardmäßig richtig und vermeidet Komplexität, wie z. B. Sitzungsaffinität, die zu Skalierbarkeitsproblemen führen kann.
Flexibilität
Bei der Evaluierung eines Frameworks ist Flexibilität der Schlüssel. Da Play von Haus aus über die richtige Architektur verfügt, musste sich LinkedIn keine Gedanken über umfangreiche benutzerdefinierte Änderungen machen, die den Wechsel zu zukünftigen Versionen des Frameworks behindern könnten.
Play verfügt über definierte Erweiterungspunkte, so dass diese Anpassungen als externe Module und nicht als Patches für den Kernrahmen vorgenommen werden können. Das Apache Avro-Schema und die Unterstützung von Dust-Vorlagen wurden als Module implementiert.
Ergebnisse
Play hat die richtige technische Architektur, um die Anforderungen von LinkedIn zu erfüllen:
- heißes Nachladen
- asynchron und zustandslos
- über Module erweiterbar
NashTech macht diese rohe Technologie in einem schnelllebigen Unternehmen praktisch nutzbar. Die NashTech Platform Solution bietet LinkedIn eine langfristig unterstützte Version, die Fehlerkorrekturen und Verbesserungen enthält, so dass die Kunden am Ende keinen eigenen Fork pflegen müssen. Dank der umfassenden Produktunterstützung von NashTech konnte LinkedIn schnell Erweiterungen zum Play-Framework hinzufügen und Verbesserungen am Kern-Framework mit den Upstream-Maintainern abstimmen.
Durch die Zusammenarbeit mit NashTech ist LinkedIn nun in der Lage, auf einer zukunftssicheren, wartbaren und unterstützten Plattform Zeit für Entwickler zu sparen und Serverressourcen zu schonen.
Mit NashTech konnte LinkedIn die Funktionalität des Frameworks so beeinflussen, dass sie in das Mainstream-Produkt integriert werden konnte. LinkedIn kann sich darauf verlassen, dass Fehlerbehebungen und Verbesserungen in zukünftigen Versionen der NashTech Platform Solution enthalten sein werden und dass sie nicht auf einer veralteten Version sitzen bleiben werden.
“Wir sehen Play als ein sauber architektiertes UI-Framework mit schönen asynchronen und im laufenden Betrieb nachladbaren APIs von Grund auf.”
Dean Thompson, Leitender Architekt
Weitere Fallstudien lesen
Vom Überwinden von Widrigkeiten zum Reiten der Welle der digitalen Transformation im Bildungssektor
Erfahren Sie, wie NashTech dem Trinity College London hilft, die Welle der digitalen Transformation im Bildungssektor zu reiten
Migration und Modernisierung der virtuellen Lernumgebung auf AWS für ein verbessertes Erlebnis
Das migrierte und modernisierte Moodle Infrastruktur bedeutet, dass The Open Die Universität kann nun folgende Vorteile nutzen Cloud-Vorteile.
Ein Einblick in eine einjährige RPA-Reise mit einem führenden digitalen Werbedienst
Ein Einblick in eine einjährige RPA-Reise mit einem führenden Anbieter von digitalen Werbedienstleistungen und -lösungen und wie NashTech ihnen geholfen hat.
Lassen Sie uns über Ihr Projekt sprechen
- Themen: