Software Engineering

ADR'ler: Teknik Seçimleri İş Hedefleriyle Uyumlaştırma

Hızlı tempolu yazılım geliştirme dünyasında teknik kararlar nadiren izole bir ortamda alınır. Bir çerçeve benimsemek, bir veritabanı seçmek veya bir API yapısı tanımlamak gibi her seçim, hem mühendislik ekibi hem de iş paydaşları için uzun vadeli sonuçlar doğurur. Ancak bu kararlar genellikle toplantılarda, anlık mesajlaşma uygulamaları üzerinden veya kıdemli mühendislerin zihinlerinde alınır; bu da kritik personelin ayrılması veya yeni gereksinimlerin ortaya çıkması durumunda organizasyonu savunmasız bırakır. İşte tam da bu noktada Mimari Karar Kaydı (ADR) vazgeçilmez bir araç haline gelir. Bu sadece geliştiriciler için bir belge değil, liderlik için stratejik bir varlıktır.

ADR Nedir ve Liderlik Neden İçin Önemlidir

ADR, önemli bir teknik kararı, kararın alındığı bağlamı, bu kararın sonuçlarını ve değerlendirilen alternatifleri kaydeden kısa ve odaklı bir belgedir. Liderlik için ADR'ler, soyut teknik tartışmaları somut ve denetlenebilir iş mantığına dönüştürür. Sistemin nasıl çalıştığından ziyade neden bu şekilde inşa edildiğini açıklayan bir "kâğıt izi" sağlar. Bu şeffaflık, paydaşların ödünleşimleri (trade-off'ları) net bir şekilde görebilmesi sayesinde mühendislik ve ürün ekipleri arasında güven inşa eder: hız ile maliyet, ölçeklenebilirlik ile karmaşıklık veya pazara çıkış süresi ile teknik borç.

Liderlik ADR'leri incelediğinde kod okumaz; risk değerlendirmeleri okur. Örneğin, yerinde (on-premise) altyapı yerine yönetilen bir bulut hizmeti kullanımını belgeleyen bir ADR, doğrudan operasyonel yük ve sermaye harcamalarına hitap eder. Bu, teknik mimariyi finansal ve operasyonel hedeflerle uyumlu hale getirir.

Maksimum Etki İçin ADR Yapılandırması

Liderlik aracı olarak etkili olabilmesi için bir ADR'nin öz ve yapılandırılmış olması gerekir. Şablonlar değişmekle birlikte, standart bir format genellikle aşağıdaki bölümleri içerir. Aşağıda, bir Git deposunda sürüm kontrolü altında tutulması kolay olan, Markdown formatında pratik bir ADR örneği bulunmaktadır.

# ADR-001: Veri Kalıcılık Katmanı Seçimi

## Durum
Kabul Edildi

## Bağlam
Uygulamamız, yoğun saatlerde artan okuma gecikmesi (latency) yaşıyor.
Mevcut bellek içi çözüm, ölçekleme ücretleri olarak bize ayda 500 $
maliyet çıkarıyor ve sunucu yeniden başlatmalarına karşı kırılgan.
Maliyet, performans ve operasyonel basitlik arasında denge kuran
kalıcı bir depolama çözümüne ihtiyacımız var.

## Karar
Bellek içi depolamadan, yönetilen bir bulut sağlayıcıda (ör. AWS RDS)
çalışan PostgreSQL'e geçiş yapacağız.

## Sonuçlar
### Pozitif
*   Ölçeklemede önemli maliyet azalması (kullanım başına ödeme vs. sabit ücret).
*   Geliştirilmiş dayanıklılık ve tutarlılık.
*   Yönetilen hizmet sayesinde azalan operasyonel yük.

### Negatif
*   Başlangıçta göç çabası 20 mühendislik saati olarak tahmin ediliyor.
*   Ağ atlaması nedeniyle okuma gecikmesinde hafif bir artış (~5ms),
    bu durum indeksleme ile azaltılıyor.

## Değerlendirilen Alternatifler
*   **MongoDB:** Karmaşık tutarlılık gereksinimleri ve ekibimizin mevcut
    beceri seti için daha yüksek operasyonel yük nedeniyle reddedildi.
*   **Kalıcılıklı Redis:** Veri setimiz boyutu için yüksek bellek maliyetleri
    ve veri bütünlüğü endişeleri nedeniyle reddedildi.

Uygulama İçin Pratik İpuçları

ADR'lerin başarılı olması için iş akışına entegre edilmeleri gerekir. Onları bürokratik bir yük olarak görmeyin. Bunun yerine, onları toplantı öncesi bir artefakt olarak kullanın. Büyük bir karar bekleniyorsa, önce ADR taslağını hazırlayın. Taslağı toplantıdan önce paydaşlarla paylaşmak, "Sonuçlar" bölümüne odaklanmış bir tartışmaya olanak tanır. Bu, konuşmayı görüşten etkiye kaydırır.

Ayrıca, ADR'leri ana kod depoda tutun. Bu, yeni bir geliştirici katıldığında mimari seçimlerin geçmişini tarayabilmesini sağlar. Ayrıca liderliğin, mikro hizmetler ile monolitler hakkında tekrarlayan tartışmalar gibi zaman içindeki kalıpları aramasına olanak tanır; bu da ekibin bu ödünleşimler hakkındaki anlayışının olgunlaşıp olgunlaşmadığını ortaya koyar.

Sonuç

Mimari Karar Kaydı, teknik bir günlükten çok daha fazlasıdır. Mühendislik ekibi ile iş liderliği arasında bir köprüdür. Teknik seçimlerin bağlamını, kararını ve sonuçlarını belgeleyerek ADR'ler, yazılım mimarisini iş hedefleriyle uyumlu hale getirmek için gereken netliği sağlar. Riski azaltır, onboarding'i (yeni başlayanların sisteme uyum sürecini) iyileştirir ve ödünleşimleri tartışmak için ortak bir dil oluşturur. Teknik kararların doğrudan finansal etkileri olan bir ortamda ADR'ler isteğe bağlı değildir—sürdürülebilir ve ölçeklenebilir büyüme için zorunludur. Küçük başlayın: Sprint'teki bir sonraki önemli kararı seçin, belgeleyin ve paydaşlarınızla paylaşın. Kazanacağınız netlik anında olacaktır.

Share: