Config Dosyası (Yapılandırma Dosyası) Nedir?

Temel Kavramlar * Config Dosyası Nedir?

Bir uygulamanın kodunu değiştirmeden davranışını nasıl değiştirebilirsiniz? Cevap, çoğu zaman config dosyalarında saklıdır. Peki config dosyası nedir, hangi formatlarda kullanılır ve production ortamında neden bu kadar kritiktir?

ODYA TeknolojiTeknik Rehber~8 dk okuma
Tanım

Config Dosyası Nedir?

Config dosyası (yapılandırma dosyası), bir uygulamanın, servisin veya sistemin çalışma zamanı davranışını belirleyen ayarları; kaynak koddan bağımsız, insan tarafından okunabilir bir dosyada tanımlayan yapıdır. Host adresleri, port numaraları, log seviyeleri, timeout değerleri, feature flag'ler, bağlantı havuzu boyutları gibi parametreler tipik olarak config dosyasında yaşar.

Buradaki kritik nokta şu: config dosyası olmadan da yazılım çalışır, ama her ortam değişikliğinde (dev → staging → production) kaynak kodun yeniden derlenmesi gerekir. Config dosyası bu bağımlılığı kırar; aynı binary veya container image'ı, farklı config dosyalarıyla farklı ortamlarda çalıştırabilirsiniz.

Bu prensip, 12-Factor App metodolojisinin üçüncü maddesinde de net şekilde tanımlanır: konfigürasyon, koddan kesin bir şekilde ayrılmalıdır.

# Uygulama davranışını kod değişmeden değiştiren tanım dosyası (app.config.yaml)
app:
  name: odya-LLM-agent
  environment: production
  log_level: warn

database:
  host: db-primary.internal
  port: 5432
  pool_size: 20
  timeout_ms: 3000

feature_flags:
  topology_engine: true
  legacy_snmp_poller: false
Avantajlar

Config Dosyası Neden Koddan Ayrı Tutulur?

  • 01
    Ortam Bağımsızlığı Aynı artifact, farklı ortamlarda farklı davranış sergileyebilir; yeniden build gerekmez.
  • 02
    Güvenlik Sınırı Credential ve secret'lar kod deposundan ayrı tutularak sızıntı riski azalır (ideal senaryoda config dosyasında da düz metin secret bulunmaz).
  • 03
    Operasyonel Çeviklik Bir davranış değişikliği için geliştirme ekibini beklemeden, ops/SRE ekibi config değeri değiştirip deploy edebilir.
  • 04
    Auditability (Denetlenebilirlik) Config dosyaları version control'e alındığında, "hangi ayar ne zaman değişti" sorusu git geçmişi ile anında cevaplanır.
Formatlar

Yaygın Config Dosyası Formatları

Format seçimi; okunabilirlik, veri tipi zenginliği, yorum satırı desteği ve ekosistem araçlarıyla uyumluluk arasındaki denge üzerinden yapılır.

Format Güçlü Yönü Tipik Kullanım
YAML Özel bir programlama bilgisi gerektirmeden kolayca okunabilir, hiyerarşik yapıyı doğal ifade eder. Kubernetes manifest'leri, Ansible playbook, CI/CD pipeline
JSON Programatik parse için standart, şema doğrulaması (JSON Schema) kolay. API config'leri, package.json, tsconfig.json
TOML Açık ve tip-güvenli sözdizimi, YAML'in belirsizliklerinden arınmış. Rust (Cargo.toml), Python (pyproject.toml)
INI Basit key=value yapısı, düşük öğrenme eğrisi. Windows uygulamaları, eski sistem servisleri
XML Şema doğrulama (XSD) ve namespace desteği güçlü. Enterprise Java uygulamaları (Spring, web.xml)
.env Environment variable ile birebir eşleşir, secrets için pratik. 12-factor uygulamalar, Docker Compose
Not

YAML'in indentation (girinti) hassas yapısı, büyük ölçekli config dosyalarında sessiz hatalara (silent failure) yol açabilir. Bu nedenle YAML kullanan ekipler genellikle CI pipeline'ına yamllint veya şema doğrulama adımı eklerler.

Kullanım Alanları

Config Dosyası Nerede Kullanılır?

Uygulama Katmanı
Backend servisler, veritabanı bağlantı string'i, cache TTL değeri, rate limit eşikleri gibi parametreleri config dosyasından okur. Spring Boot'ta application.yml, Node.js'te .env + dotenv kütüphanesi, Python'da settings.py bu katmanın tipik örnekleridir.
Altyapı & Ağ Cihazları
Router, switch, firewall gibi ağ cihazları da kendi config dosyalarını tutar. Bu dosyaların merkezi olarak yedeklenmesi, network operasyonlarının en kritik disiplinlerinden biridir — bir cihaz arızalandığında recovery süresi doğrudan config backup'ın güncelliğine bağlıdır.
Container & Orkestrasyon
Kubernetes'te bu ihtiyaç ConfigMap ve Secret nesneleriyle native olarak çözülür. ConfigMap davranışsal ayarları, Secret ise hassas verileri taşır ve pod'lara enjekte edilir.
Güvenlik & Riskler

Secrets ve Config Drift

🔒

Secrets: Kırılgan Nokta

Config dosyalarıyla ilgili en yaygın hata, database şifresi veya API anahtarı gibi hassas verilerin düz metin olarak dosyaya yazılıp version control'e commit edilmesidir. Olgun sistemlerde davranışsal config Git'te tutulurken, secrets Vault veya AWS Secrets Manager gibi araçlarda saklanır.

⚠️

Config Drift: Sessiz Risk

Config drift, bir sistemin fiili yapılandırmasının, tanımlı referans (baseline) yapılandırmadan zamanla sapmasıdır. Manuel yapılan bir hotfix'in kod deposuna yansıtılmaması sonucu oluşur. Sorun anında, "belgelenen" config ile "gerçek" config farklı olduğu için kök neden analizi saatler sürebilir.

Operasyonel Bakış

Bu, tam da SolarWinds Network Configuration Management modülünün çözmeye odaklandığı problem sınıfıdır: cihaz ve servis config'lerinin sürekli izlenmesi, baseline'dan sapmaların otomatik tespiti ve değişiklik geçmişinin denetlenebilir şekilde tutulması.

En İyi Pratikler

İyi Pratikler (Best Practices)

  • 01
    Version Control Zorunlu: Secrets hariç tüm config dosyaları Git'te tutulmalı, değişiklikler code review sürecinden geçmelidir (Configuration as Code).
  • 02
    Şema Doğrulama: Deploy öncesi config dosyası bir şemaya karşı doğrulanmalı; production'da typo kaynaklı hatalar önlenmelidir.
  • 03
    Ortam Ayrımı Net Olmalı: config.dev.yaml, config.prod.yaml gibi ayrım veya environment variable override mekanizması kullanılmalı.
  • 04
    Immutable Deployment: Config değişikliği, çalışan bir instance'a canlı müdahale yerine yeni bir deployment olarak yapılmalı; bu, drift riskini azaltır.
  • 05
    Merkezi İzleme: Özellikle çok sayıda cihaz/servis varsa, config durumunun (baseline uyumluluğunun) merkezi bir noktadan görünür olması gerekir.
SSS

Sık Sorulan Sorular

S: Config dosyası ile environment variable arasındaki fark nedir?

Config dosyası, ayarları kalıcı bir dosyada; environment variable ise işletim sistemi veya container seviyesinde çalışma zamanında enjekte edilen değişkenlerde tutar. Pratikte ikisi genelde birlikte kullanılır: dosya varsayılan değerleri taşır, environment variable'lar bu değerleri override eder.

S: Config drift nasıl tespit edilir?

Periyodik olarak fiili config ile referans (baseline) config karşılaştırılır. Manuel yapıldığında hataya açıktır; bu nedenle sürekli izleme yapan otomasyon araçları (NOC platformları, IaC drift detection) tercih edilir.

S: Hangi formatı seçmeliyim: YAML mi JSON mı?

İnsan tarafından sık düzenlenecekse (Kubernetes manifest, CI pipeline) YAML; makine tarafından üretilip tüketilecekse (API response, otomatik export) JSON daha uygundur. TOML, ikisinin ortasında tip güvenliği arayan projeler için iyi bir seçenektir.

Config Dosyası Yapılandırma Dosyası Config Drift YAML / JSON IaC

Config Değişikliklerini Görünür Kılın

SolarWinds Network Configuration Management, altyapınızdaki config drift'i otomatik tespit eder ve değişiklik geçmişini denetlenebilir şekilde tutar.

Daha Fazla Bilgi Alın →

İçindekiler

ODYA Teknoloji

Detaylı Bilgi İçin
Bizimle İletişime Geçin

    İletişime Geçin