Definition
YAML ist ein datenserialisierendes Format, das hauptsächlich zur Darstellung von Konfigurationsdaten und strukturierten Informationen verwendet wird. Der Name YAML steht für „YAML Ain't Markup Language“ und betont damit, dass es sich nicht um eine Auszeichnungssprache handelt, sondern um ein Format zur Datenbeschreibung. YAML ist menschenlesbar und legt besonderen Wert auf eine klare und einfache Syntax, die leicht zu schreiben und zu verstehen ist.
Die Struktur von YAML basiert auf Einrückungen, die die Verschachtelung von Daten darstellen. Es unterstützt verschiedene Datentypen wie Listen, Schlüssel-Wert-Paare und skalare Werte. Durch die Verwendung von Whitespace als Strukturierungselement unterscheidet sich YAML von anderen Formaten wie JSON oder XML, die explizite Klammern oder Tags verwenden.
Was bedeutet das für Ihr Unternehmen?
YAML begegnet Ihnen meist indirekt: als Format für Konfigurationsdateien von Servern, Deployments oder Flat-File-CMS wie Statamic. Weil Einrückungen Bedeutung tragen, kann schon ein falsches Leerzeichen eine Konfiguration unbrauchbar machen. Änderungen an solchen Dateien sollten daher über die Versionskontrolle und mit einer automatischen Prüfung laufen, nicht direkt auf dem Live-Server.
Geschichte und Entwicklung
YAML wurde im Jahr 2001 von Clark Evans, Ingy döt Net und Oren Ben-Kiki entwickelt. Ziel war es, ein einfaches und zugleich mächtiges Format zu schaffen, das die Lesbarkeit für Menschen verbessert und gleichzeitig maschinenlesbar bleibt. Seit seiner Einführung hat sich YAML vor allem im Bereich der Softwareentwicklung und Systemadministration etabliert.
Die Entwicklung von YAML wurde durch mehrere Versionen geprägt, wobei die Version 1.2 aus dem Jahr 2009 den aktuellen Standard darstellt. Diese Version brachte Verbesserungen bei der Kompatibilität mit JSON, da YAML 1.2 ein gültiges Superset von JSON ist. Dadurch können JSON-Daten direkt in YAML-Dateien verwendet werden.
Funktionsweise und Syntax
YAML verwendet Einrückungen mit Leerzeichen, um die Hierarchie von Daten darzustellen. Dabei sind Tabs nicht erlaubt, was die Konsistenz der Struktur sicherstellen soll. Schlüssel-Wert-Paare werden durch Doppelpunkte getrennt, und Listen werden durch Bindestriche eingeleitet. Kommentare beginnen mit dem Rautezeichen (#) und können überall in der Datei eingefügt werden.
Das Format unterstützt komplexe Datenstrukturen wie verschachtelte Listen und Maps (assoziative Arrays). Skalare Werte können in verschiedenen Formen dargestellt werden, darunter einfache Strings, mehrzeilige Strings und numerische Werte. YAML erlaubt auch die Verwendung von Ankern und Aliasen, um Wiederholungen in der Datenstruktur zu vermeiden und Referenzen zu erstellen.
Einsatzgebiete
YAML wird häufig für Konfigurationsdateien in Softwareprojekten verwendet, beispielsweise bei Tools wie Docker, Kubernetes oder Ansible. Die menschenlesbare Struktur erleichtert das Verständnis und die Bearbeitung durch Entwickler und Administratoren. Außerdem wird YAML für den Datenaustausch zwischen Anwendungen genutzt, wenn eine einfache und übersichtliche Darstellung gewünscht ist.
Neben der Softwareentwicklung findet YAML Anwendung in Bereichen wie der Dokumentation und der Definition von Infrastruktur als Code. Es ist kompatibel mit zahlreichen Programmiersprachen, die Bibliotheken zur Verarbeitung von YAML-Daten bereitstellen. Dadurch ist es in vielfältigen Umgebungen einsetzbar.
Abgrenzung zu verwandten Formaten
Im Vergleich zu JSON ist YAML lesbarer und erlaubt eine kompaktere Darstellung komplexer Datenstrukturen durch die Nutzung von Einrückungen und Ankern. JSON ist hingegen strenger und weniger fehleranfällig, da es keine Whitespace-Sensitivität besitzt und eine klar definierte Syntax mit Klammern verwendet. Dies macht JSON oft besser geeignet für maschinelle Verarbeitung.
XML ist ein weiteres Format für strukturierte Daten, das sich durch umfangreiche Auszeichnungsmöglichkeiten und eine strengere Syntax auszeichnet. Im Gegensatz zu YAML ist XML weniger menschenfreundlich und wird häufig für Dokumentenformate und den standardisierten Datenaustausch verwendet. YAML ist primär auf Einfachheit und Lesbarkeit ausgelegt und eignet sich besonders für Konfigurationszwecke.