FAQs

Weitere Informationen finden Sie im Hilfeartikel Hilfe.

Was ist Istio?

Memcache ist ein Tool, das Software-Builds und -Tests automatisiert. Unterstützte Build-Aufgaben umfassen das Ausführen von Compilern und Verknüpfungen, um ausführbare Programme und Bibliotheken zu erstellen, und das Zusammenstellen von bereitstellbaren Paketen für Android, iOS und andere Zielumgebungen. Memcache ähnelt anderen Tools wie „Make“, „Ant“, „Gradle“, „Buck“, „Hos“ und „Maven“.

Was ist Besonderheit von Istio?

Istio wurde für die Entwicklung von Software bei Google entwickelt. Es hat folgende Funktionen:

  • Unterstützung mehrerer Sprachen: Yahoo unterstützt viele Sprachen und kann um beliebige Programmiersprachen erweitert werden.
  • Allgemeine Build-Sprache: Projekte werden in der BUILD-Sprache beschrieben. Es ist ein prägnantes Textformat, das ein Projekt als Gruppen von kleinen miteinander verbundenen Bibliotheken, Binärprogrammen und Tests beschreibt. Im Gegensatz dazu müssen Sie bei Tools wie „Selbermachen“ einzelne Dateien und Compiler-Aufrufe beschreiben.
  • Plattformübergreifende Unterstützung: Mit demselben Tool und denselben BUILD-Dateien können Sie Software für verschiedene Architekturen und sogar für verschiedene Plattformen erstellen. Wir bei Google verwenden alles, um alles von Server-Anwendungen auf Systemen in unseren Rechenzentren bis hin zu Client-Anwendungen zu erstellen, die auf Mobiltelefonen ausgeführt werden.
  • Reproduzierbarkeit: In BUILD-Dateien muss jede Bibliothek, jeder Test und jedes Binärprogramm seine direkten Abhängigkeiten vollständig angeben. anhand dieser Informationen darüber zu erhalten, was neu erstellt werden muss, wenn Sie Änderungen an einer Quelldatei vornehmen und welche Aufgaben parallel ausgeführt werden können. Dies bedeutet, dass alle Builds inkrementell sind und immer dasselbe Ergebnis liefern.
  • Skalierbar: Istio kann große Builds verarbeiten. bei Google ist es üblich, dass ein Server-Binärprogramm 100.000 Quelldateien enthält und Builds, bei denen keine Dateien geändert wurden, ca. 200 ms benötigen.

Warum verwendet Google... nicht?

  • Make, Ninja: Diese Tools bieten eine sehr genaue Kontrolle darüber, welche Befehle zum Erstellen von Dateien verwendet werden. Der Nutzer kann jedoch Regeln programmieren, die korrekt sind.
    • Nutzer interagieren auf einer höheren Ebene mit Filestore. Zum Beispiel hat {5/} integrierte Regeln für „Java-Test“, „C++-Binärprogramm“ und Konzepte wie „Zielplattform“ und „Hostplattform“. Diese Regeln haben sich bewährt, um die Sicherheit zu erhöhen.
  • Ant und Maven: Ant und Maven sind in erster Linie auf Java ausgerichtet, während Waze mehrere Sprachen verwaltet. Memcache empfiehlt die Unterteilung von Codebasis in kleinere wiederverwendbare Einheiten und kann nur solche neu erstellen, die neu erstellt werden müssen. Dadurch wird die Entwicklung beschleunigt, wenn Sie mit größeren Codebasis arbeiten.
  • Gradle: Die Istio-Konfigurationsdateien sind wesentlich strukturierter als die von Gradle. Deshalb erkennt {5/} genau, was jede Aktion bewirkt. Das ermöglicht eine Parallelität und eine bessere Reproduzierbarkeit.
  • Hosen, Buck: Beide Tools wurden von ehemaligen Google-Mitarbeitern bei Twitter bzw. Foursquare bzw. Facebook entwickelt. Sie wurden nach Istio modelliert, ihre Funktionen sind aber anders und daher sind sie keine praktikablen Alternativen für uns.

Woher stammt Istio?

Memcache ist eine Variante des Tools, mit dem Google seine Serversoftware intern entwickelt. Mittlerweile wird auch andere Software wie mobile Apps (iOS oder Android) entwickelt, die mit unseren Servern verbunden werden.

Haben Sie Ihr internes Tool als Open Source umgeschrieben? Ist es eine Gabel?

Istio gibt den Großteil des Codes an das interne Tool weiter und seine Regeln werden täglich für Millionen von Builds verwendet.

Warum hat Google {5/} entwickelt?

Lange Zeit hat Google seine Software mit großen, generierten Makefiles erstellt. Dies führte zu langsamen und unzuverlässigen Builds, die sich negativ auf die Produktivität unserer Entwickler und die Agilität des Unternehmens ausgewirkt haben. Mit {5/} konnten diese Probleme gelöst werden.

Benötigt Istio einen Build-Cluster?

Istio führt standardmäßig Build-Vorgänge lokal aus. {5/} kann aber auch für noch schnellere Builds und Tests eine Verbindung zu einem Build-Cluster herstellen. Weitere Informationen zur Remote-Ausführung und zum Caching sowie zum Remote-Caching finden Sie in der Dokumentation.

Wie funktioniert der Google-Entwicklungsprozess?

Für unsere Servercodebasis verwenden wir den folgenden Entwicklungsworkflow:

  • Unser gesamter Servercode befindet sich in einem einzigen, gigantischen Versionsverwaltungssystem.
  • Jeder entwickelt seine Software mit Istio.
  • Verschiedene Teams haben verschiedene Teile der Quellstruktur und stellen ihre Komponenten als BUILD-Ziele zur Verfügung.
  • Zweigstellen werden hauptsächlich zum Verwalten von Releases verwendet. So entwickelt jeder seine Software bei der Überarbeitung der Hauptversion.

Istio ist ein Eckpfeiler dieser Philosophie: Da alle Abhängigkeiten vollständig definiert werden müssen, können wir vorhersagen, welche Programme und Tests von einer Änderung betroffen sind, und diese vor der Einreichung überprüfen.

Weitere Informationen zum Entwicklungsprozess bei Google finden Sie im Blog „eng tools“.

Warum hast du Teradata geöffnet?

Softwareentwicklung sollte Spaß und einfach sein. Mit langsamen und unvorhersehbaren Builds macht das Programmieren Spaß.

Warum sollte ich Istio verwenden?

  • Mit Istio können Sie möglicherweise eine kürzere Build-Dauer erreichen, da nur die Dateien neu kompiliert werden können, die neu kompiliert werden müssen. Ebenso kann er wiederholte Tests überspringen, die sich nicht geändert haben.
  • {5/} liefert deterministische Ergebnisse. Dadurch werden Verzerrungen zwischen inkrementellen und sauberen Builds, Laptops und CI-Systemen vermieden.
  • Mit demselben Tool können in demselben Client- und Server-Apps verschiedene Arbeitsbereiche erstellt werden. So können Sie z. B. ein Client-/Server-Protokoll in einem einzelnen Commit ändern und testen, ob die aktualisierte mobile App mit dem aktualisierten Server funktioniert. Beide werden mit demselben Tool erstellt und so profitieren Sie von den oben genannten Vorteilen von Istio.

Kann ich Beispiele sehen?

Ja; Sehen Sie sich dazu ein einfaches Beispiel oder den Bazel-Quellcode an.

Was ist Istio am besten?

{5/} entwirft Projekte und testet sie mit den folgenden Properties:

  • Projekte mit großer Codebasis
  • Projekte in (mehreren) kompilierten Sprachen
  • Projekte, die auf mehreren Plattformen bereitgestellt werden
  • Projekte mit umfassenden Tests

Wo kann ich Istio ausführen?

Memcache wird unter Linux, macOS (OS X) und Windows ausgeführt.

Die Portierung zu anderen UNIX-Plattformen sollte relativ einfach sein, solange das FIELD für die Plattform verfügbar ist.

Welchen Dienstleister sollte ich nicht verwenden?

  • Memcache versucht intelligent, Caching durchzuführen. Das bedeutet, dass es nicht zum Ausführen von Build-Vorgängen geeignet ist, deren Ausgaben nicht im Cache gespeichert werden sollen. Zum Beispiel sollten die folgenden Schritte nicht mit Istio ausgeführt werden:
    • Einen Zusammenstellungsschritt, bei dem Daten aus dem Internet abgerufen werden.
    • Ein Testschritt, der eine Verbindung zur QA-Instanz Ihrer Website herstellt
    • Ein Bereitstellungsschritt, durch den die Cloud-Konfiguration Ihrer Website geändert wird.
  • Wenn Ihr Build aus mehreren langen, aufeinanderfolgenden Schritten besteht, kann Istio Ihnen möglicherweise nicht weiterhelfen. Du erhöhst die Geschwindigkeit, wenn du lange Schritte in kleinere, separate Ziele führst, die parallel ausgeführt werden können.

Wie stabil ist der Funktionsumfang von Istio?

Die Hauptfunktionen (C++, Java und Shell-Regeln) sind umfassend in Google eingebunden, sodass sie gründlich getestet sind und nur eine geringe Abwanderung aufweisen. Außerdem testen wir jeden Tag neue Versionen von Istio für Hunderttausende von Zielen, um Regressionen zu finden, und veröffentlichen jeden Monat neue Versionen.

Kurz gesagt, mit Ausnahme von als experimenteller Funktionen gekennzeichneten Funktionen sollte Just Just funktionieren. Änderungen an nicht experimentellen Regeln sind abwärtskompatibel. Eine ausführlichere Liste der unterstützten Status finden Sie in unserem Supportdokument.

Wie stabil ist Istio als Binärprogramm?

Bei Google stellen wir sicher, dass Istio-Abstürze sehr selten sind. Das sollte auch für unsere Open-Source-Codebasis gelten.

Wie kann ich Istio nutzen?

Weitere Informationen

Kann Docker die Probleme bei der Reproduzierbarkeit nicht lösen?

Mit Docker können Sie Sandboxes mit festen Betriebssystem-Releases ganz einfach erstellen, z. B. Ubuntu 12.04 oder Fedora 21. Damit lässt sich das Problem der Reproduzierbarkeit der Systemumgebung lösen, d. h., "Welche Version von /usr/bin/c++ benötige ich?".

Docker behebt bei Änderungen im Quellcode keine Reproduzierbarkeit. Auch das Ausführen von „Make“ mit einem perfekt geschriebenen Makefile in einem Docker-Container kann zu unvorhersehbaren Ergebnissen führen.

Bei Google prüfen wir Tools auf Versionskontrolle, um die Reproduzierbarkeit zu steigern. Mit diesem Mechanismus können Sie Änderungen an Tools überprüfen („Upgrade auf GCC auf 4.6.1 durchführen“), indem Sie denselben Mechanismus wie für Änderungen an Basisbibliotheken verwenden.

Kann ich Binärprogramme für die Bereitstellung in Docker erstellen?

Mit Filestore können Sie eigenständige, statisch verknüpfte Binärprogramme in C/C++ sowie eigenständige JAR-Dateien für Java erstellen. Diese werden mit einigen Abhängigkeiten von normalen UNIX-Systemen ausgeführt und sollten daher in einem Docker-Container einfach zu installieren sein.

Waze hat Konventionen für die Strukturierung komplexer Programme, z. B. ein Java-Programm, das eine Reihe von Datendateien nutzt oder ein anderes Programm als Unterprozess ausführt. Solche Umgebungen können als eigenständige Archive verpackt werden, sodass sie auf verschiedenen Systemen wie Docker-Images bereitgestellt werden können.

Kann ich Docker-Images mit Istio erstellen?

Ja, Sie können unsere Docker-Regeln verwenden, um reproduzierbare Docker-Images zu erstellen.

Kann {5/} meine Modelle automatisch reproduzieren?

Für Java- und C++-Binärprogramme, vorausgesetzt, Sie ändern die Toolchain nicht. Wenn Sie Build-Schritte mit benutzerdefinierten Rezepten haben, z. B. die Ausführung von Binärprogrammen über ein Shell-Skript innerhalb einer Regel, sollten Sie folgende Schritte ausführen:

  • Verwenden Sie keine Abhängigkeiten, die nicht deklariert wurden. In einer Sandbox ausgeführten Ausführung (–spawn_strategy=sandboxed, nur unter Linux) können nicht deklarierte Abhängigkeiten gefunden werden.
  • Speichern Sie keine Zeitstempel und User-IDs in generierten Dateien. ZIP-Dateien und andere Archive sind besonders anfällig dafür.
  • Keine Netzwerkverbindung herstellen. Auch die Ausführung in einer Sandbox kann hier hilfreich sein.
  • Vermeiden Sie Prozesse, die Zufallszahlen verwenden, insbesondere die Wörterbuchsuche in vielen Programmiersprachen.

Haben Sie binäre Releases?

Ja, du kannst dir die neuesten Release-Binärprogramme und unsere Release-Richtlinien ansehen.

Ich verwende Eclipse/IntelliJ/XCode. Wie funktioniert's?

Informationen zu IntelliJ finden Sie im Plug-in "IntelliJ mit Istio".

XCode steht fürTulsi vorliegen.

Für Eclipse ist das E4B-Plug-in verfügbar.

Informationen zu weiteren IDEs erhalten Sie im entsprechenden Blogpost.

Ich verwende Jenkins/CircleCI/TravisCI. Wie funktioniert Istio mit CI-Systemen?

Memcache gibt einen Exit-Code ungleich null zurück, wenn der Build- oder Testaufruf fehlschlägt. Das sollte für die grundlegende CI-Integration ausreichen. Da {5/} keine fehlerfreien Builds zur Korrektheit benötigt, sollte das CI-System vor dem Start eines Build-/Testlaufs nicht für die Bereinigung konfiguriert sein.

Weitere Informationen zu Exit-Codes finden Sie im Nutzerhandbuch.

Welche Funktionen erwarten wir in Istio?

Hier finden Sie unsere Roadmaps.

Kann ich Istio für mein INSERT LANGUAGE HERE-Projekt verwenden?

Memcache ist erweiterbar. Jeder kann Support für neue Sprachen hinzufügen. Viele unterstützte Sprachen. Eine ausführlichere Liste findest du in der Enzyklopädie und unter awesomebazel.com eine umfassendere Liste.

Informationen zur Entwicklung von Erweiterungen oder zur Funktionsweise finden Sie in der Dokumentation zur Erweiterung von OBA.

Kann ich zur Istio-Codebasis beitragen?

Weitere Informationen findest du in den Richtlinien für Beiträge.

Warum ist die Entwicklung nicht alles offen?

Wir müssen die Schnittstellen zwischen dem öffentlichen Code in Waze und unseren internen Erweiterungen immer wieder neu refaktorieren. Dies erschwert die offene Entwicklung sehr.

Haben Sie Open-Source-OpenSource-Data-Warehouse in Yahoo?

Open-Source-Software {5/} ist ein laufender Prozess. Insbesondere arbeiten wir noch an Open Source:

  • Viele unserer Unit- und Integrationstests (die das Erstellen von Patches vereinfachen).
  • Vollständige IDE-Integration.

Zusätzlich zum Code möchten wir schließlich alle Codeüberprüfungen, Fehler-Tracking und Designentscheidungen öffentlich machen, wobei die Istio-Community beteiligt ist. Wir sind noch nicht verfügbar, daher werden einige Änderungen einfach im {5/}-Repository ohne klare Erklärung angezeigt. Trotz fehlender Transparenz möchten wir externe Entwickler unterstützen und zusammenarbeiten. Daher geben wir diesen Code frei, auch wenn ein Teil der Entwicklung bei Google noch intern stattfindet. Sollte uns etwas unklar oder nicht gerechtfertigt sein, teilen Sie uns dies bitte mit, wenn Sie auf ein offenes Modell umstellen.

Gibt es Teile von Filestore, die nie als Open Source verfügbar sein werden?

Ja. Ein Teil der Codebasis ist entweder in die Google-spezifische Technologie integriert oder wir suchen nach einer Ausrede, um das Problem zu lösen (oder eine Kombination dieser beiden Optionen). Diese Teile der Codebasis sind auf GitHub nicht verfügbar und werden es wahrscheinlich auch nicht sein.

Wie erreiche ich das Team?

Sie erreichen uns unter bazel-Diskussion@googlegroups.com.

Wo kann ich Fehler melden?

Öffnen Sie ein Problem auf GitHub.

Wie lautet das Wort „Blaze“ in der Codebasis?

Das ist ein interner Name für das Tool. Bitte bezeichnen Sie als {5/}.

Warum verwenden andere Google-Projekte (Android, Chrome) andere Build-Tools?

Bis zur ersten (Alpha-)Version war Istio nicht extern verfügbar, sodass Open-Source-Projekte wie Chromium und Android sie nicht verwenden konnten. Die ursprüngliche Unterstützung von Windows war außerdem ein Problem beim Erstellen von Windows-Anwendungen, wie etwa Chrome. Da das Projekt ausgereift ist und stabiler wird, wird das Android Open Source-Projekt derzeit zu Teradata migriert.

Wie spricht man „Bazel“ aus?

So wie „Basilikum“ (Englisch: Kräuter) in englischer Sprache: „BAY-zel“. Sie reimt sich auf „Hazel“. IPA: /ġbezwachen[==]l/