yaml
Published: 2024-06-05 15:24:12

YAML (YAML Ain't Markup Language), yapılandırma dosyaları ve veri serileştirme için kullanılan, okunabilirliği yüksek bir veri serileştirme dilidir. YAML dosyaları, insan tarafından okunabilir ve yazılabilir basit bir sözdizimine sahiptir. Bu nedenle, yapılandırma dosyaları, veri değişim formatları ve uygulama yapılandırmaları için yaygın olarak kullanılır.

### YAML Dosyalarının Temel Özellikleri

1. **İnsana Okunabilir**:
   - YAML, düz metin formatında ve kolayca anlaşılabilir bir yapıdadır. Girintileme ve boşluklara dayalıdır, bu nedenle iç içe geçmiş veri yapıları çok net bir şekilde gösterilebilir.

2. **Veri Yapılarını Destekler**:
   - YAML, basit veri türlerinden karmaşık veri yapılarına kadar birçok veri türünü destekler. Liste, dize, tamsayı, sözlük ve iç içe geçmiş yapılar gibi çeşitli veri türlerini kolayca ifade edebilir.

3. **Çoklu Platform Desteği**:
   - YAML, birçok programlama dili ve platform tarafından desteklenir ve işlenebilir. Bu nedenle, farklı uygulamalar ve hizmetler arasında yapılandırma ve veri değişimi için idealdir.

### YAML Dosya Sözdizimi

#### Temel Veri Türleri

- **Anahtar-Değer Çiftleri**:
  ```yaml
  anahtar: değer
  ```
  Örnek:
  ```yaml
  name: John Doe
  age: 30
  ```

- **Listeler**:
  ```yaml
  - öğe1
  - öğe2
  - öğe3
  ```
  Örnek:
  ```yaml
  hobbies:
    - reading
    - traveling
    - swimming
  ```

- **İç İçe Geçmiş Yapılar**:
  ```yaml
  person:
    name: John Doe
    age: 30
    address:
      street: 123 Main St
      city: Anytown
      zipcode: 12345
  ```

#### Karmaşık Veri Yapıları

- **Sözlük İçinde Liste**:
  ```yaml
  employees:
    - name: John Doe
      position: Developer
    - name: Jane Smith
      position: Designer
  ```

- **Liste İçinde Sözlük**:
  ```yaml
  - name: John Doe
    age: 30
  - name: Jane Smith
    age: 25
  ```

#### Özel Karakterler ve Stringler

- **Dize Kullanımı**:
  ```yaml
  single_quoted: 'Tek tırnaklı dize'
  double_quoted: "Çift tırnaklı dize"
  plain: Düz dize
  ```

- **Çok Satırlı Stringler**:
  ```yaml
  folded_style: >
    Bu, katlanmış stil kullanılarak yazılmış
    çok satırlı bir metindir.
    Satır sonları boşlukla birleştirilir.
  
  literal_style: |
    Bu, tam stil kullanılarak yazılmış
    çok satırlı bir metindir.
    Satır sonları korunur.
  ```

### YAML Kullanım Alanları

1. **Yapılandırma Dosyaları**:
   - Birçok yazılım ve hizmet, yapılandırma dosyaları için YAML kullanır. Örneğin, Docker, Kubernetes ve Ansible gibi araçlar yapılandırma ve yönetim işlemleri için YAML dosyalarını kullanır.

2. **Veri Değişim Formatı**:
   - YAML, JSON ve XML gibi diğer veri değişim formatlarına alternatif olarak kullanılabilir. Okunabilirliği ve esnekliği sayesinde veri serileştirme ve değişiminde tercih edilir.

3. **CI/CD Boru Hatları**:
   - Sürekli entegrasyon ve sürekli teslimat (CI/CD) boru hatları, yapılandırmalarını tanımlamak için YAML dosyalarını kullanır. Örneğin, GitLab CI/CD, Travis CI ve CircleCI gibi araçlar YAML dosyaları ile yapılandırılır.

### Örnek YAML Dosyası

```yaml
version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  database:
    image: postgres:latest
    environment:
      POSTGRES_USER: example
      POSTGRES_PASSWORD: example
```

Bu örnek, Docker Compose kullanarak bir web ve veritabanı hizmetini tanımlayan basit bir YAML dosyasıdır. `version` anahtarı, Compose dosyasının sürümünü belirtir ve `services` anahtarı, başlatılacak hizmetleri tanımlar.

YAML, basitliği, okunabilirliği ve esnekliği sayesinde yapılandırma ve veri serileştirme ihtiyaçları için güçlü bir araçtır.