YAML Nedir? Tanımı, Nasıl Çalışır, Kullanım Alanları
YAML, "YAML Ain't Markup Language" (YAML Bir İşaretleme Dili Değildir) kısaltmasıyla bilinen, insan tarafından kolayca okunabilir ve yazılabilir bir veri serileştirme formatıdır.
YAML, "YAML Ain't Markup Language" (YAML Bir İşaretleme Dili Değildir) kısaltmasıyla bilinen, insan tarafından kolayca okunabilir ve yazılabilir bir veri serileştirme formatıdır. Yapılandırılmış verileri düz metin dosyaları içinde temsil etmek için tasarlanmış olup, özellikle yazılım geliştirme, sistem yönetimi ve bulut uygulamalarında yaygın olarak kullanılır. JSON, XML ve diğer veri formatlarına göre daha sade ve insana yakın bir yapısı vardır.
YAML Nasıl Çalışır?
YAML, anahtar-değer (key-value) çiftleri, listeler ve iç içe geçmiş yapılar kullanarak verileri organize eder. Boşluklar (indentation) yapının hiyerarşisini belirlemek için kullanılır. Bu sayede köşeli parantez, virgül ve tırnak işaretlerine ihtiyaç duymaz.
Basit bir YAML örneği:
kisi:
ad: Ahmet
soyad: Yilmaz
yas: 28
sehir: Istanbul
beceriler:
- Python
- JavaScript
- Docker
Bu yapıda "kisi" ana anahtar, "ad", "soyad", "yas" ve "sehir" özellikleridir. "beceriler" ise liste (array) olarak gösterilmiş ve tire (-) işaretiyle başlayan satırlar listeye aittir.
YAML dosyaları .yaml veya .yml uzantısı ile kaydedilir. Yazılım uygulamaları bu dosyaları okuyup içeriğini programlama dillerine (Python, Java, Go, vb.) dönüştürür.
YAML'in Avantajları
- Okunabilirlik: İnsan dostu yapısı nedeniyle hızlı anlaşılır ve hatalar kolayca görülür.
- Yazması Kolay: Tırnak işareti ve köşeli parantez gereksizdir; boşluk kullanımı yeterlidir.
- Kompakt Yapı: JSON'dan daha az karakter kullanarak aynı bilgiyi temsil edebilir.
- Geniş Dil Desteği: Python, Ruby, Java, Go, Node.js gibi popüler dillerde kütüphaneler mevcuttur.
- Yorum Desteği: Dosya içinde "#" işaretiyle yorum satırları eklenebilir.
- Veri Tipleri: String, sayı, boolean, tarih gibi çeşitli veri tiplerini destekler.
YAML'in Dezavantajları
- Boşluk Hassasiyeti: İndentation hataları kritik sorunlara neden olabilir. Sekme ve boşluk karması dosyayı çalışmaz hale getirir.
- Parsing Karmaşıklığı: XML ve JSON'a kıyasla işlemci tarafından parse edilmesi biraz daha yavaş olabilir.
- Geniş Dosya Boyutu: Çok büyük veri setleri için verimli olmayabilir.
- Sınırlı Veri Yapıları: Bazı ileri veri yapıları doğrudan desteklenmez; custom çözümler gerekebilir.
YAML Nerede Kullanılır?
YAML, birçok popüler teknoloji ve yazılım aracında standart format olarak benimsenmiştir:
- Docker Compose: Konteyner orkestrasyon ve yönetimi için docker-compose.yml dosyaları.
- Kubernetes: Bulut uygulamaları ve konteynerları yapılandırmak için manifest dosyaları.
- Ansible: Sunucu otomasyonu ve yapılandırma yönetimi playbook dosyaları.
- GitHub Actions: CI/CD iş akışları tanımlamak için workflow dosyaları.
- GitLab CI: Sürekli entegrasyon ve dağıtım pipeline yapılandırması.
- Konfigürasyon Dosyaları: Uygulamaların ayarlarını depolamak (ör: Flask, Django, Spring Boot).
- API Belgelendirmesi: OpenAPI (Swagger) spesifikasyonları YAML ile yazılabilir.
- Veri Analizi: Python pandas, YAML dosyalarından veri yüklemeyi destekler.
YAML Veri Tipleri
| Veri Tipi | Örnek | Açıklama |
|---|---|---|
| String (Metin) | isim: "Mehmet" | Tırnaklı veya tirnaksız metin |
| Integer (Tam Sayı) | yas: 30 | Ondalıksız sayı |
| Float (Ondalık) | oran: 3.14 | Ondalıklı sayı |
| Boolean (Doğru/Yanlış) | aktif: true | true veya false değeri |
| Tarih/Saat | olusturma: 2024-01-15 | ISO 8601 formatında tarih |
| Liste (Array) | renkler: [kirmizi, mavi] | Birden fazla eleman |
| Sözlük (Object) | kimlik: {ad: Ali, soyad: Can} | İç içe anahtar-değer çifti |
| Null (Boş) | degisken: null | Değer atanmamış alan |
YAML ile JSON Karşılaştırması
YAML örneği:
kullanici:
ad: Zeynep
posta: zeynep@mail.com
hobi:
- yoga
- kitap
Aynı veri JSON'da:
{
"kullanici": {
"ad": "Zeynep",
"posta": "zeynep@mail.com",
"hobi": ["yoga", "kitap"]
}
}
YAML sürümü daha az karakter kullanırken aynı bilgiyi iletir. JSON daha sıkı bir yapı gerektirirken, YAML daha esnek ve insana yakındır.
YAML Güvenlik Notları
YAML dosyalarını işlerken dikkat edilmesi gereken hususlar vardır. Kötü niyetli kodlar YAML içine gömülebilir ve çalıştırılabilir. Bu nedenle güvenilir kaynaklar dışında YAML dosyalarını işlerken güvenli parser kütüphaneleri kullanmalısınız. Örneğin Python'da safe_load() fonksiyonu, unsafe_load() yerine tercih edilmelidir.
YAML Editörleri ve Araçları
- VS Code: YAML eklentileriyle syntax highlighting ve validation desteği.
- Sublime Text: YAML dosyaları için tema ve plugin desteği.
- Online Editörler: YAML to JSON dönüştürücüler ve doğrulayıcılar.
- Komut Satırı Araçları: yamllint ile YAML dosyalarının stili kontrol edilebilir.