Wie man skalierbare Webanwendungen erstellt
Eine skalierbare Webanwendung wird so genannt, weil sie linear mehr Anfragen in einer anmutigeren Weise annehmen kann. Mit zunehmender Hardware wird die Website in der Lage sein, eine Vielzahl von Anfragen gleichzeitig zu bearbeiten. Wenn eine Website skalierbar ist, bedeutet das einfach, dass die Website in der Lage ist, alle Anfragen gleich gut zu bewältigen, wenn die Zahl der Nutzer steigt und die Anfragen überhand nehmen.
Beispiel für eine beliebte Website, die erfolgreich skaliert wurde.
Betrachtet man das Wachstum von Facebook, so ist es erstaunlich, wie es im Laufe der Jahre gewachsen ist. Selbst wenn Sie kein regelmäßiger Facebook-Nutzer sind, ist es schwer, den Einfluss des Social-Media-Kanals auf Unternehmen und Betriebe zu ignorieren. Laut einer Statistik gibt es mehr als
1,94 Milliarden aktive Facebook-Nutzer im März 2017
und verzeichnen jedes Jahr einen Anstieg von über 18 %. Die Zahl der täglich aktiven Mobilfunknutzer ist mit 1,15 Milliarden Nutzern erschreckend hoch.
Facebook ist in PHP geschrieben, und der große Erfolg des Unternehmens liegt in seiner Fähigkeit, dank einer riesigen Anwendungsarchitektur auf eine Million Nutzer zu skalieren. Die Architektur vermeidet Engpässe, so dass sie in jeder Sprache skalierbar ist. Die Form der Kurve (Verhältnis zwischen Kosten und Nutzung) bestimmt die Anwendungsarchitektur. Wenn eine Anwendung skalierbar ist, verläuft die Kurve eher diagonal, aber wenn sie mit Engpässen konfrontiert wird, verläuft sie fast senkrecht.
Auch die verwendete Sprache, Datenbank oder der Compiler spielen eine wichtige Rolle für die Form der nichtlinearen Kurve. Wenn es einen grundlegenden Designfehler gibt (mehr als nur ein Implementierungsdetail), dann wird die Kurve schnell nach oben schießen. Die sich ständig weiterentwickelnde Architektur von Facebook wird von einigen der besten Ingenieure der Branche betreut. Facebook hat seine eigene Version von optimiertem PHP und hat völlig neue Software wie Apache Cassandra entwickelt.
Jetzt kommt die Millionen-Dollar-Frage: Wie erstellt man skalierbare Webanwendungen?
Hier sind einige einfache Optionen zur Skalierung Ihrer Webanwendungen:
1. Hochskalieren
Sobald die Last auf den Back-End-Reifen zu groß wird, kann die Website nicht mehr funktionieren. Eine machbare, aber wahrscheinlich sehr teure Option wäre die Aufstockung der Ressourcen auf der Basis der einzelnen Einheiten. Skalieren Sie dies auch auf andere Dimensionen wie Netzwerkgeschwindigkeit, IOPs, Speicherkapazität und Arbeitsspeicher. Der Grund, warum dies teuer wird, ist, dass es keine eingebaute Elastizität bietet, so dass es bei geringer Last teuer werden kann.
Es ist jedoch zu beachten, dass eine skalierende Architektur einen Load Balancer (Anfragen von Endnutzern, Grenze zwischen externen und internationalen Netzen) benötigt, um Verbindungen eines bestimmten Typs zu streamen, und eine Scanning-Gruppe (zur Verfolgung der Systemlast, zum Erzeugen neuer CPU-Instanzen und zur Verfolgung des Bestands aktiver Instanzen).
2. Caching
Der Bedarf an Skalierung hat zur Nachfrage und zum Einsatz von Skalierung in großem Maßstab geführt. Caching kann die Leistung verbessern und den Ressourcenverbrauch reduzieren. Die Ressourcennutzung umfasst CPU, S3-Gebühren, Datenspeichergebühren, externe API-Nutzung und Datenbank. Um sicherzustellen, wo Caching angewendet werden kann, führen Sie eine Datenanalyse durch, um die Verteilung der Anfragen und Datengrößen, einschließlich des Lese-Schreib-Verhältnisses, zu verstehen.
3. Die Art der durchzuführenden Partitionen
Der Zweck der Skalierung besteht natürlich darin, die Kapazität zu erhöhen. Dies kann auf zwei Arten geschehen – vertikal oder horizontal. Bei der vertikalen Skalierung fügen Sie einem einzelnen Server mehr Ressourcen hinzu, z. B. größere oder härtere Laufwerke. Der Rechenvorgang ist größer, mit besserem Speicher und schnellerer CPU. Bei der vertikalen Skalierung nehmen Sie eine einzelne Ressource und erhöhen die Umschlagskapazität. Bei der horizontalen Skalierung können Sie weitere Knoten hinzufügen. Die häufigste Art der horizontalen Skalierung ist die Aufteilung der Dienste in Partitionen oder Shards. Diese Scherben würden bestimmten Funktionen zugewiesen (z. B. den Interessen verschiedener Arten von Nutzern gerecht werden). Der Vorteil von Scherben besteht darin, dass sie zusätzliche Speicherkapazität bieten können. Der Haken an der Sache ist jedoch, dass Ihr anfänglicher Entwurf eine horizontale Skalierung vorsehen muss, da das nachträgliche Hinzufügen einer solchen Skalierung eine wirklich schwierige Aufgabe sein kann.
Beachten Sie bei der Skalierung von Anwendungen die folgenden Punkte, während Sie an der Aufgabe arbeiten
1. Keine Kompromisse bei der Betriebszeit der Website
Die Website sollte für die Nutzer jederzeit verfügbar sein. Stellen Sie sich vor, Sie betreiben ein e-Commerce-Geschäft und der Server bricht jedes Mal zusammen, wenn die Anfragen in die Höhe schnellen. Die Betriebszeit einer Website ist also sehr wichtig, und Sie sollten Ihre Webanwendung so skalieren, dass sie unabhängig von Systemausfällen und -unterbrechungen jederzeit verfügbar ist.
2. Option Abruf
Die Benutzer können dieselben Daten erneut aufrufen, so dass sie jederzeit Zugriff auf die Daten haben sollten. Es sei denn natürlich, Sie haben die Daten aktualisiert. Sie können das Vertrauen der Nutzer gewinnen, wenn diese wissen, dass sie jederzeit auf die Daten der Website zugreifen können, wenn sie es wünschen.
3. Leistung
Das Hauptziel der Skalierung der Anwendung ist es, eine hervorragende Leistung zu gewährleisten. Eine schnelle Reaktion mit sofortigem Abruf, gefolgt von einer geringen Latenzzeit, ist äußerst wichtig.
4. Verwaltbarkeit
Nach der Skalierung der Website ist es sehr wichtig, die Verwaltbarkeit der Website zu prüfen, damit sie einfach zu bedienen, zu warten und zu aktualisieren ist.
Fazit
Es ist ein Irrglaube, dass PHP nicht skalierbar ist. Wie würden dann andere große Websites mit PHP betrieben? Skalierbarkeit ist eher eine Frage der Anwendungsarchitektur als eine Frage der Sprache. Die für die Entwicklung skalierbarer Webanwendungen erforderliche Zeit hängt von der Komplexität der Anwendung und dem verwendeten Framework ab. In einer skalierbaren Anwendung gibt es zwei verschiedene Programmierungsschichten: Frontend und Backend. Wie der Name schon sagt, ist das Frontend etwas, mit dem der Benutzer interagiert, und die Schnittstelle kann alles von Android bis iOS sein. Das Backend macht etwa 80 % der gesamten Arbeit aus, aber der Benutzer ist sich dieses Teils seiner Webanwendung nicht bewusst. Die Funktionalität spielt eine wichtige Rolle bei der Skalierbarkeit. Wenn ein Benutzer Bilder laden möchte, muss die Skalierbarkeit des Speichers berücksichtigt werden, da er sie möglicherweise jederzeit abrufen muss. Für bessere Bilddownloads und -abfragen ist eine geringe Latenzzeit sehr wichtig.
Hier einige interessante Informationen zu diesem Thema:
7 Stadien der Skalierung von Webanwendungen, Strategien für Architekten.
Wie erstellt man skalierbare Webanwendungen?
Aufbau skalierbarer Anwendungen auf der Google-Cloud-Plattform.
Flickr.com/ klarititemplateshop.com/ Blogtrepreneur
Über den Autor: Deepak ist Leiter von PHPBabu und arbeitet auch bei der Muttergesellschaft YUHIRO Technologies Private Limited als Büroleiter.