bg_image
header

Monorepo

Ein Monorepo (kurz für "Monorepository") ist ein einziges Versionsverwaltungssystem (z.B. ein Git-Repository), in dem der Code für mehrere Projekte oder Dienste gespeichert wird. Im Gegensatz zu einem "Multirepo", bei dem jedes Projekt oder jeder Dienst in einem eigenen Repository verwaltet wird, umfasst ein Monorepo alle Projekte in einem einzigen Repository.

Merkmale und Vorteile eines Monorepos:

  1. Gemeinsame Codebasis: Alle Projekte teilen sich eine einzige Codebasis, was die Zusammenarbeit zwischen verschiedenen Teams erleichtert. Änderungen, die sich auf mehrere Projekte auswirken, können gleichzeitig gemacht und getestet werden.

  2. Einfache Code-Synchronisation: Da alle Projekte denselben Versionsverlauf nutzen, ist es einfacher, gemeinsame Bibliotheken oder Abhängigkeiten konsistent zu halten.

  3. Wiederverwendbarkeit: In einem Monorepo ist es einfacher, wiederverwendbare Module oder Bibliotheken zwischen Projekten zu teilen.

  4. Integrierte Versionskontrolle: Es gibt eine zentrale Versionskontrolle, sodass Änderungen in einem Projekt sofort auch andere Projekte betreffen können.

  5. Skalierbarkeit: Große Unternehmen wie Google oder Facebook nutzen Monorepos, um Tausende von Projekten und Entwicklern unter einem einzigen Repository zu organisieren.

Nachteile eines Monorepos:

  • Komplexität des Builds: Der Build-Prozess kann komplizierter werden, da er die Abhängigkeiten zwischen vielen verschiedenen Projekten berücksichtigen muss.

  • Leistungsprobleme: Bei sehr großen Repositories können Versionskontrollsysteme wie Git langsamer arbeiten, da sie mit der Größe des Repos kämpfen.

Ein Monorepo ist besonders sinnvoll, wenn verschiedene Projekte eng miteinander verzahnt sind und es oft zu Überschneidungen oder Abhängigkeiten kommt.

 


HHVM - HipHop Virtual Machine

HHVM steht für "HipHop Virtual Machine" und handelt sich um eine virtuelle Maschine, die von Facebook entwickelt wurde. HHVM wurde ursprünglich entwickelt, um die Leistung von PHP-Anwendungen zu verbessern, insbesondere für große und komplexe Anwendungen, die auf der Facebook-Plattform liefen. Hier sind einige wichtige Informationen über HHVM:

  1. Ziel und Zweck: HHVM wurde entwickelt, um PHP-Anwendungen effizienter auszuführen. PHP ist eine weit verbreitete Skriptsprache, die häufig für die Entwicklung von Webanwendungen verwendet wird. HHVM sollte die Leistung von PHP-Anwendungen steigern, insbesondere für High-Traffic-Websites wie Facebook.

  2. Just-In-Time (JIT)-Kompilierung: HHVM verwendet eine JIT-Kompilierung (Just-In-Time-Kompilierung), um PHP-Code in maschinenlesbaren Code zu übersetzen. Dies ermöglicht eine schnellere Ausführung von PHP-Code im Vergleich zur traditionellen Interpretation.

  3. Hack-Programmiersprache: Parallel zur Entwicklung von HHVM hat Facebook auch die Programmiersprache Hack entwickelt. Hack ist eine statisch typisierte Erweiterung von PHP, die auf HHVM ausgeführt wird. Hack fügt PHP zusätzliche Funktionen hinzu, wie z.B. statische Typisierung, und erweitert die Möglichkeiten zur Fehlererkennung und -vermeidung.

  4. Facebook-Anwendung: HHVM wurde ursprünglich für die Ausführung von Facebook-Anwendungen entwickelt und war ein wichtiger Bestandteil der Facebook-Infrastruktur. Es half Facebook, die Ausführungsgeschwindigkeit von PHP-Anwendungen erheblich zu steigern und den Ressourcenverbrauch zu reduzieren.

  5. Open Source: HHVM ist ein Open-Source-Projekt, das der Öffentlichkeit zur Verfügung steht. Entwickler können es herunterladen und verwenden, um ihre eigenen PHP- oder Hack-Anwendungen zu beschleunigen.

Es ist jedoch zu beachten, dass Facebook sich entschieden hat, HHVM für die Ausführung von PHP-Anwendungen nicht mehr aktiv zu verwenden. Stattdessen konzentrierte sich Facebook auf die Verwendung von PHP 7 und späteren Versionen, die selbst erhebliche Leistungsverbesserungen brachten. Dennoch wird HHVM weiterhin als Open-Source-Projekt gewartet und von anderen Entwicklern und Organisationen verwendet, die von seinen Funktionen profitieren möchten.

 


GraphQL

GraphQL

GraphQL ist eine Abfragesprache und Laufzeitumgebung, die entwickelt wurde, um effizientere, flexiblere und performantere APIs (Application Programming Interfaces) zu erstellen. Es wurde von Facebook entwickelt und erstmals 2012 intern verwendet, bevor es 2015 der Öffentlichkeit zugänglich gemacht wurde.

Im Gegensatz zu traditionellen REST-APIs, bei denen der Client verschiedene Endpunkte aufruft, um verschiedene Ressourcen abzurufen oder zu bearbeiten, ermöglicht GraphQL dem Client, genau die Daten anzufordern, die er benötigt, und zwar in einer einzigen Abfrage. Dies minimiert Overfetching (zu viele Daten abrufen) und Underfetching (zu wenige Daten abrufen), was die Netzwerklatenz reduziert und die Effizienz der Datenübertragung erhöht.

GraphQL bietet folgende Hauptmerkmale:

  1. Flexibilität: Der Client definiert die benötigten Daten in der Abfrage. Dies ermöglicht es, genau die Felder abzurufen, die benötigt werden, und verschwendet keine Bandbreite oder Radezeit für unnötige Daten.

  2. Typsystem: GraphQL definiert ein Schema, das die Datenstruktur beschreibt. Dies ermöglicht es, klar zu definieren, welche Daten abgefragt werden können und welche Beziehungen zwischen den Daten existieren.

  3. Abfragen und Mutationen: Mit GraphQL können Abfragen (Lesen von Daten) und Mutationen (Ändern von Daten) in einer einzigen Abfragegruppe zusammengefasst werden, was die Konsistenz und Leistung verbessert.

  4. Echtzeitkommunikation: GraphQL unterstützt Subscriptions, die es ermöglichen, in Echtzeit auf Änderungen zu reagieren und Push-Benachrichtigungen von Servern zu erhalten.

  5. Entwicklungswerkzeuge: GraphQL bietet leistungsstarke Entwicklungswerkzeuge wie Introspektion, die es Entwicklern ermöglichen, das Schema zu erkunden und zu überprüfen.

GraphQL wird von vielen großen Unternehmen und Plattformen verwendet, darunter Facebook, GitHub, Shopify und mehr. Es hat sich als eine leistungsfähige Alternative zu traditionellen REST-APIs erwiesen und wird oft in modernen Anwendungen und Diensten eingesetzt, um die Effizienz und Flexibilität der Datenabfrage und -manipulation zu verbessern.


Zufalls-Technologie

Open Web Application Security Project - OWASP


owasp.png