Eğitim · mühendislik uygulaması

RFC'den ADR'ye: Karara Ulaşmak ve Gerekçeyi Korumak

Herkes ADR'lerin iyi olduğunu kabul ediyor. Neredeyse hiç kimse onları güncel tutmuyor — çünkü tartışma ve kayıt farklı yerlerde yaşıyor. Arayı kapatın ve ADR kendiliğinden yazılır.

AT
Argumentree Team
Engineering Practice
August 24, 2026
11 min oku

RFC'den ADR'ye: Karara Ulaşmak ve Gerekçeyi Korumak

Bir RFC genellikle anlaşmaya ulaşmakla ilgilidir; bir ADR ise ulaşılan anlaşmayı kaydeder — ve ADR'lerin bozulmasının nedeni, tartışmanın sohbet ve çekme isteği yorumlarında yaşarken kaydın sonradan, bir kişinin hafızasından yazılmasıdır. RFC-ADR akışını tartışmadan kaydın çıkması için çalıştırmak: öneriyi bir kök iddia olarak belirtmek (gelecek ADR'nin başlığı); her bir gücün ayrı ayrı sorgulanabilmesi için bağlamı ayrı pro-argümanlar olarak eklemek; her değerlendirilen seçeneğe kendi artıları ve eksileri ile kendi kardeş düğümünü vermek — reddedilenler de dahil; RFC yorum turunu zincirler olarak yürütmek (açıklama için Soru-Cevap zincirleri, itirazlar için İnceleme zincirleri — her biri inceleyici ve seçenek yazarı arasında dört tur diyalog, N inceleyici N paralel zincir anlamına gelir; bölünmeleri uzlaştırmak için Uzlaşma zincirleri, tamamlanmış bir zincirin çözülüp çözülmediğine bakılmaksızın girişimi kaydettiği yer); karar vericilerin seçenekleri, odanın nerede durduğuna dair kanıt olarak derecelendirmesini sağlamak — derecelendirme karar değildir, adlandırılmış bir insan hala bunu belirtir; kabul edilen sonuçları seçilen seçeneğin con-çocukları olarak kaydetmek; ve bir sonraki kararı değiştirdiği karara bağlayarak üst üste binmeyi modellemek, eski olanı okunabilir tutmak. Mevcut markdown ADR'lerinden veya karar ağırlıklı transkriptlerden tohumlama, köken damgalı AI çıkarımı ile çalışır. Dürüst sınırlar: bu, depo izlenen ADR'lerin yerini almaz (kaydı dışa aktar ve taahhüt et); yerleşik bir ADR durum alanı yoktur, bu nedenle önerilen/kabul edilen/üstü kapatılan bir konvansiyondur; tamamlanmış bir zincir tarafların anlaştığı anlamına gelmez — bu, tam olarak anlaşmazlık ve taahhütü okunabilir kılan şeydir.

Share:
Kısa Özet

Bir RFC genellikle anlaşmaya ulaşmakla ilgilidir; bir ADR ulaşılan anlaşmayı kaydeder. ADR'ler bozulur çünkü anlaşma sağlama sohbet sırasında gerçekleşir ve kayıt daha sonra, hafızadan yapılır. Her ikisini de tek bir yapıda yürütün:

  • Teklif bir kök iddiadır; bağlam güçleri ayrı, itiraz edilebilir pro-argümanlardır; her seçenek — reddedilenler de dahil — kendi düğümünü alır
  • RFC turu zincirlerdir: Açıklama için Soru-Cevap, itiraz için İnceleme, uzlaşmak için Uzlaşma — dört döngülü diyaloglar, N inceleyici = N paralel zincir
  • Değerlendirme karar değildir: karar vericiler kanıt olarak değerlendirir; bir isimli insan bunu adlandırır — ve nedenini yazar, özellikle odanın karşısında.
  • ADR ağaçtır: hiçbir şey transkribe edilmez, bu yüzden transkripsiyonda hiçbir şey kaybolmaz — eğer organizasyonunuz gerektiriyorsa repoya aktarın

Hiç kimsenin yeniden oluşturamadığı karar

Yeni teknoloji lideri makul bir soru soruyor: her hizmet neden o kuyruk aracılığıyla faturalama sistemiyle iletişim kuruyor? Bir ADR var — ADR-014, dört cümle, on bir ay önce yazılmış. Bağlam: "güvenilir faturalama entegrasyonuna ihtiyacımız vardı." Karar: "kuyruğu kullan." Sonuçlar: "biraz ek gecikme." Teknik olarak bir kayıt. Hiçbir şeyi yanıtlamıyor.

Oradaydın, bu yüzden ADR-014'ün söylemediğini biliyorsun: iki Slack kanalında ve hararetli bir PR dizisinde geçen üç haftalık tartışma; o zamandan beri artırılan bir hız sınırı nedeniyle kaybeden senkron-API seçeneği; şimdi kimsenin bulamadığı bir kıyaslama ile yanıtlanan personel mühendisinin itirazı. Tartışma gerçekleşti. Kayıt daha sonra, bir kişinin, bir Cuma günü, hafızasından yazıldı.

Bu, gerçekten iyi bir uygulamanın belgelenmiş, neredeyse evrensel başarısızlık modudur. AWS'nin öneri rehberi ve Microsoft'un İyi Tasarlanmış belgeleri her ikisi de ADR'leri önermektedir — ve her ikisi de acıyı belirtmektedir: güncel tutmak zaman alır ve ekipler ve seçimler arttıkça yönetmek karmaşık hale gelir. Temel neden yapısaldır: tartışma ve kayıt farklı yerlerde yaşar, bu nedenle kayıt her zaman kayıplı bir transkripsiyondur. Çözüm, bunları aynı yer haline getirmektir. Uygulama mühendislik spesifik değildir, hatta ADR spesifik de değildir. Google, önemli teknik çalışmalara başlamadan önce yazılı ve gözden geçirilmiş bir tasarım belgesi — sorun, önerilen yaklaşım, değerlendirilen alternatifler, ticaret-off'lar — gerektirir; bu, şirketin kendi Google'da Yazılım Mühendisliği belgesinde belirtilen bir uygulamadır. Bu, bir ADR ile aynı disiplindir, bir adım daha önce uygulanır: ADR, bir tasarım belgesinin savunduğu seçimi kaydeder. İkisi de aynı nedenle aynı şekilde başarısız olur ve her ikisi de aynı hareketle düzeltilir — kaydın yaşadığı yerde tartışmayı tutmak, birini diğerine sonradan transkribe etmek yerine. Aşağıdaki her adımı her iki belgeyi de kapsayacak şekilde okuyun.

Neden ADR'ler bozulur

ADR topluluğunun kendi materyalinden bir cümle tüm tanıyı taşıyor: bir RFC genellikle anlaşmaya ulaşmakla ilgilidir; bir ADR ulaşılan anlaşmayı kaydeder. İki eser, iki an — ve aralarındaki her şey sızar. "Açıkça" yanlış olan alternatifler kaydedilmez (ta ki açık olmaktan çıkana kadar). Nihai tasarımı şekillendiren itiraz, yalnızca kapalı bir başlıkta bir PR yorumu olarak hayatta kalır. Bağlam bölümü en son, en kötü şekilde, oyunu kaybeden tarafından yazılır. Karar üretmesi gereken toplantılar özetler üretir ve bir kararı kalıcı kılan akıl yürütme — tüm karar kalitesi zinciri bunun üzerine inşa edilmiştir — tam olarak transkripsiyonun düştüğü şeydir.

İhtiyacınız olan şey

Her RFC için bir Argumentree tartışması. Mevcut bir markdown ADR'ler koleksiyonunuz veya karar ağırlıklı bir toplantı transkriptiniz varsa, yükleyin — AI çıkarımı bunu kaynak pasajlarıyla birlikte yapılandırılmış artı/eksi argümanlarına dönüştürür, çıkarılmış olarak damgalanır, böylece içe aktarılan iddialar asla canlı olanlarla karıştırılmaz (çıkarma nasıl çalışır).

Adım 1–3: Teklif, bağlam, seçenekler

  1. 1Öneriyi ana iddia olarak belirtin — önerilen karar, bir soru değil: "Tüm faturalama yazmalarını kalıcı bir kuyruğa yönlendireceğiz." Bu cümle gelecekteki ADR'nin başlığıdır. Kontrol noktası: kök var, bir cümle, önerici tarafından yazılmıştır.
  2. 2Ayrı pro-argümanlar olarak bağlam. Karar almayı gerekli kılan her bir güç — güvenilirlik gereksinimi, faturalama sistemi hız limiti, denetim yetkisi — kök altında kendi argümanıdır. Monolitik bir "Bağlam" paragrafı sorgulanamaz; üç ayrı bağlam iddiası her biri ayrı ayrı sorgulanabilir, onaylanabilir veya çürütülebilir. Kontrol Noktası: ≥2 bağlam argümanı, her biri bir güç.
  3. 3Her seçenek kendi düğümünü alır. Kuyruk, senkron API, toplu iş — kardeş argümanlar, her biri kendi artı ve eksileriyle. Artı/eksi, ebeveynle ilişkilidir, bu nedenle bir seçeneğin dezavantajları o seçeneğe bağlıdır, karara değil. Reddedeceğinizi beklediğiniz seçenekleri de dahil edin: reddedilen kardeş, gelecek yılın "neden sadece… yapmadık" sorusunu yanıtlar. Kontrol noktası: bir okuyucunun sorabileceği her seçenek mevcuttur.

Adım 4–6: Kayıt bırakan RFC turu

Şimdi inceleme turu — genellikle sohbet, yorumlar ve koridorlarda dağınık bir şekilde gerçekleşen kısım. Burada, her biri bir dört döngü diyaloğu olan, bir inceleyici ile seçeneğin yazarı arasında üç tür yapılandırılmış değişim olarak yürütülüyor:

Soru-Cevap zinciri — netleştir

"Mevcut senkron istemcilere ne olur?" Seçenek yazarının yanıtı, gözden geçirenin takibi, yazarın tekrar yanıtı — tamam. Hiçbir seçenek, karara yanıtlanmamış bir soru taşımamalıdır.

Gözden geçirme zinciri — nesne

Bir inceleyici bir seçeneği geçersiz olarak değerlendirir; yazar yanıt verir; takip; yanıt. N inceleyici = N paralel zincir aynı seçenek üzerinde — her itiraz, paylaşılan bir başlıkta kaybolmuş bir yorum değil, kendi atfedilebilir değişimidir.

Uzlaşma zinciri — uzlaştırmak

İki kamp bölündü mü? Biri diğer yazara orta seçeneği öneriyor. Eğer bu çözülürse, yeni bir seçenek düğümünüz olur. Eğer çözülmezse, tamamlanmış zincir, denendiği kaydıdır — bu da neredeyse aynı değere sahiptir.

Tamamlandı ≠ kabul edildi

Bir zincirin tamamlandığını belirtmesi, değişimin sürecini tamamladığı anlamına gelir — soru sorulmuş ve iki kez yanıtlanmış — tarafların anlaştığı anlamına gelmez. Bu ayrımı koruyun; bu önemli hale gelecek.

Adım 7: Karar verme — ve derecelendirmenin ne olmadığı

Karar vericiler seçenekleri değerlendirir: her birine etiketlenmiş bir puan. Dağılım, gerçek bir kanıttır — odanın durumu, kayıtlara göre, arama öncesinde. Ama puan karar değildir. Adı geçen bir insan hala karar verir ve eğer arama dağılıma karşı olursa, karar düğümü burada açıklanır. (O adı geçen insanın kim olması gerektiği ve rolün tartışmadan önce nasıl atanacağı kendi disiplini — bkz. karar hakları eğitimi.)

Ekibiniz için soru

Son mimari kararınızı kim verdi — ve bunu kanıtlayabilir misiniz? Toplantıda kimlerin olduğu değil: kararı kimin sahiplenip, gerekçesinin nerede yazılı olduğu.

Adım 8–9: Yazmak zorunda olmadığınız ADR

İşte sonuç. Kayıt, sonradan yazdığınız bir belge değildir — bu, seçilen seçeneğin düğümü ve ona bağlı olan her şeydir: bağlam argümanları (Bağlam), reddedilen kardeşler (Değerlendirilen Seçenekler), tamamlanmış zincirler (tartışma, yazarlarla birlikte), derecelendirmeler (odanın durumu) ve gerekçesiyle birlikte karar argümanı (Karar). Hiçbir şey transkribe edilmez, bu nedenle transkripsiyonda hiçbir şey kaybolmaz.

  1. 1Kabul ettiğiniz sonuçları kaydedin. Bilinen dezavantajlar — ek gecikme, kuyruğun operasyonel yükü — seçilen seçeneğin kabul edilen çocukları olarak devam eder. Bunları yazmak, bunu bir tercih yerine bir karar haline getirir. Kontrol Noktası: Kayıtta ≥1 kabul edilen sonuç.
  2. 2Kuruluşunuzun depo izlemeli ADR'lere ihtiyacı varsa dışa aktarın. Birçoğu, doğru bir şekilde — kodun yanındaki markdown ADR, uyum belgesi olarak kalır. Ağaçtan dört bölümlü özeti yazın (beş dakika, Cuma değil), tam tartışma için geri bağlantı verin. Kontrol noktası: depo ADR, ağacı belirtir; ağaç, gerekçeyi tutar.

Aynı fikirde olmamak ve taahhüt etmek, kayıtlara geçmek üzere

Amazon'un ünlü yaptığı model — karşı çık ve taahhüt et — bir okunabilirlik sorunu var: Birisi daha sonra karşı çıkmanın gerçek, duyulmuş ve yanıtlanmış olduğunu nasıl bilebilir, yoksa üstünden geçilmiş mi? Zincir mekanikleri buna yanıt veriyor. Dört tam turunu tamamlayan ve anlaşma olmadan sona eren bir İnceleme zinciri tam olarak bu kayıttır: itiraz yapıldı, yanıtlandı, ısrar edildi ve tekrar yanıtlandı, kayıtlara geçildi, muhalif taahhüt etmeden önce. Muhalifin duyulduğu belgelenmiştir — bu da sonrasında taahhüt etmenin makul olmasını sağlar, sadece itaatkar olmaktan ziyade.

Tamamlanmayı uzlaşma olarak okumayın.

Tamamlandı, değişimin sona erdiği anlamına gelir, kimsenin fikrini değiştirdiği anlamına gelmez. Eğer zincir tamamlanmasını anlaşma olarak raporlarsanız, sahte bir uzlaşma üretecek ve mekanizmanın inşa etmek için var olduğu güveni yok edeceksiniz. Dürüst okuma: danışıldı, yanıt verildi, hâlâ karşı, yine de taahhüt edildi — dört gerçeğin hepsi görünür.

Adım 10: Silmeden geçersiz kılma

Kararların yaşı. Senkron seçeneği öldüren hız sınırı yükseldiğinde, doğru hamle, yerini aldığına atıfta bulunan yeni bir karar vermektir — ADR-014'ün düğümüne bağlı yeni bir argüman, neyin değiştiğini belirtir. Eski karar okunabilir kalır; gerekçesi, yeni kararın neyi geçersiz kıldığını bilmesinin tam nedenidir.

Yönetilmesi gereken bir dürüst boşluk: yerleşik bir ADR durum alanı yoktur. Önerilen / kabul edilen / geçersiz kılınan bir argümanda birinci sınıf bir durum değildir — geçersizlik, bağlantı ile modellenir ve bu konvansiyonu sürdürmek sizin sorumluluğunuzdadır. Bunu ürünün bunu zorunlu kıldığını varsaymak yerine, ekibinizin çalışma anlaşmasında belirtin.

Dürüst sınırlamalar

  • Bu, repo'nuzdaki ADR'lerin yerini almaz eğer organizasyonunuz bunların kodla birlikte versiyon kontrolünde olmasını gerektiriyorsa. Özeti dışa aktarın ve taahhüt edin; tartışma için markdown'un zayıf olduğu kısım için ağaç yapısını kullanın.
  • ADR durumu alanı yok. Önerilen/kabul edilen/iptal edilen, ürünün zorunlu kıldığı bir şey değil, sizin sürdürdüğünüz bir bağlantı kuralıdır.
  • Bir zincir dört dönüşten oluşur. Derin mimari anlaşmazlık bir çağrı gerektirecektir; zincir, daha önce denenmiş olanların kaydıdır.
  • Değerlendirmeler tek etiketli bir değerdir, ağırlıklı çok kriterli puanlama değildir.
  • Hiç kimseyi iyi bir bağlam yazmaya zorlamaz. Yapı, iyi bir kaydın maliyetini düşürür; yargıyı sağlamaz.

Pratik dersler

  • Bir RFC, bir tartışma. Tüm çeyrek mimarisini kaplayan mega-ağaçla direnin — üstlenme bağlantıları, kararları iç içe geçmekten daha iyi bağlar.
  • Mevcut olandan tohum al. Karar ağırlıklı bir transkript veya eski ADR klasörünüz, çıkarıldığında tartışmaya hızlı bir başlangıç sağlar — ithal olarak etiketlendiği için canlı argümanlar ayırt edilebilir kalır.
  • Değerlendiricilerin isimlerini zincirlerine koyun ve orada bırakın. Atıf, sorumluluktur; anonim mimari itirazlar folklora dönüşür.
  • Sonuçlar bölümü karar verene aittir, başkasına değil. Kabul edilen olumsuzluklar, onları kabul eden kişi tarafından yazıldığında, bir inceleyicinin uyarılarından farklı bir ağırlığa sahiptir.

ADR-014, yanıt veren versiyon

Yeni teknoloji liderinin sorusuna geri dönelim. Yeniden inşa edilen versiyonda, ADR-014 bir düğüm: gerekçesiyle birlikte kuyruk kararı, üç bağlam gücü (birinin artık geçersiz — görünür şekilde), eski hız sınırını adlandıran reddedilmiş bir senkron-API kardeşi, personel mühendisinin de dahil olduğu dört tamamlanmış İnceleme zinciri ve kanıt olarak eklenmiş kıyaslama. Teknoloji lideri on dakika okur, hız sınırının değiştiğini görür ve eski düğüme bağlı bir üst öneri açar. Hiç kimse Slack'i kazmaz. Tüm vaat bu: zincirler anlaşmaya ulaşır, ağaç bunu kaydeder — ve kayıt, sorulacağını bilmediğiniz soruları yanıtlar.

Kaynaklar ve daha fazla okuma

Sıkça Sorulan Sorular

RFC ile ADR arasındaki fark nedir?

RFC (yorum talebi), anlaşmaya ulaşma sürecidir: bir öneri dolaşıma sokulur, alternatifler tartışılır, itirazlar gündeme getirilir ve yanıtlanır. ADR (mimari karar kaydı) ulaşılan anlaşmayı kaydeder: bağlam, değerlendirilen seçenekler, karar, sonuçlar, durum. Bunları ayrı belgeler olarak yürütmenin başarısızlık modu, aralarındaki her şeyin sızmasıdır — tartışma sohbet ve PR yorumlarında sürerken kayıt sonradan hafızadan yazılır. RFC'yi yapılandırılmış bir argüman ağacı olarak yürütmek, ADR'nin tartışmanın kendisinden çıkmasını sağlar: hiçbir şey transkribe edilmez, bu nedenle transkripsiyonda hiçbir şey kaybolmaz.

Neden ADR'ler bayatlayıp yazılmayı durdurur?

Çünkü onları yazmak bir transkripsiyon işidir. Gerçek akıl yürütme Slack dizilerinde, inceleme yorumlarında ve toplantılarda gerçekleşir; sonrasında bir kişi, genellikle kısaca ve en son, hafızasından bir Bağlam bölümünü yeniden oluşturur. AWS ve Microsoft'un kendi kılavuzları bu acıyı belirtmektedir: ADR'lerin yazılması ve güncellenmesi zaman alır ve kararlar çoğaldıkça yönetim karmaşıklaşır. Ekipler ADR'lere olan inançlarını kaybetmezler — transkripsiyon vergisini ödemeyi bırakırlar. Tartışmayı ve kaydı aynı yapıda birleştirmek vergiyi ortadan kaldırır.

Bir kayıtla RFC inceleme turunu nasıl yürütürsünüz?

Üç yapılandırılmış adım, her biri seçeneğin yazarıyla dört döngüden oluşan bir diyalog. Açıklama için Soru-Cevap zincirleri: soru, cevap, takip, cevap. İtirazlar için Gözden Geçirme zincirleri: değerlendirme, yanıt, takip, yanıt — N gözden geçirenin aynı seçenek üzerinde N paralel zincir açmasıyla, böylece her itirazın atfedilebilir ve yanıtlanabilir kalması sağlanır. Bölünmeler için Uzlaşma zincirleri: bir taraf diğerine orta pozisyonu önerir ve bu çözülse de çözülmese de, tamamlanan zincir bunun denendiğini kaydeder. Karar vermeden önceki kontrol noktası: hiçbir seçenek yanıtlanmamış bir soru taşımaz ve her maddi itiraz tamamlanmış bir zincir olarak mevcuttur.

'Farklı düşün ve taahhüt et' karar kayıtlarıyla nasıl çalışır?

Zincir mekanikleri okunabilir hale getirir. Tam bir döngü izleyen bir İnceleme zinciri — itiraz, yanıt, takip, yanıt — ve anlaşma olmadan tamamlandığında, muhalefetin gerçek, duyulmuş ve muhalefet eden kişi taahhütte bulunmadan önce yanıtlanmış olduğunu gösteren bir belgedir. Eleştirel olarak, tamamlanmış olmak anlaşılmış olduğu anlamına gelmez: bu, değişimin sona erdiği anlamına gelir. Tamamlanmayı konsensüs olarak rapor etmek, sahte bir anlaşma üretir ve mekanizmanın değerini yok eder. Dürüst kayıt, aynı anda dört gerçeği gösterir: danışılmış, yanıtlanmış, hâlâ karşı, yine de taahhüt edilmiş — bu da tam olarak anlaşmazlık sonrası taahhüdü makul kılan şeydir.

Karar kayıtları, kod deposunda ADR'lerin yerini almalı mı?

Hayır — ve bu eğitim bunu açıkça belirtiyor. Eğer organizasyonunuz, kodun yanında sürüm kontrolü yapılmış ADR'ler gerektiriyorsa (birçok organizasyon, uyum ve çevrimdışı erişim için doğru bir şekilde bunu yapar), onları saklayın: ağaçtan dört bölümlü markdown özetini beş dakikada yazın ve bunu tartışmaya bağlayın. İş bölümü nettir: repo ADR, kalıcı uyum belgesidir; ağaç, markdown'un zayıf olduğu şeyleri barındırır — canlı tartışma, reddedilen seçenekler ve bunların gerekçeleri, itirazlar ve cevapları, ve derecelendirmeler.

Bir ADR'yi nasıl geçersiz kılarsınız?

Gelenek gereği, bir alan tarafından değil — ve bir argümanın önerilen/kabul edilen/iptal edilmiş durumu için yerleşik bir durumun olmadığını dürüstçe belirtmek gerekir. Yeni kararı, yerine geçen argümanla bağlantılı kendi argümanı olarak oluşturarak eski kararın yerini alacak şekilde modelleyin ve neyin değiştiğini belirtin (artırılan oran limiti, yeni gereklilik). Eski karar okunabilir kalır — onu silmek, yeni kararın atıfta bulunması gereken mantığı tam olarak yok eder. Bu geleneği, ekibinizin çalışma anlaşmasında belirtin, böylece kasıtlı olarak sürdürülür.

Kararları yazmayı bırakın. Onları saklamaya başlayın.

Bir sonraki RFC'nizi bir ağaç olarak yürütün: gerekçeleriyle birlikte seçenekler, yanıtlanmış zincirler olarak itirazlar ve kendiliğinden yazılan bir ADR.

Ücretsiz 14 Gün Deneme Başlat
Kredi kartı gerekmez

İlgili Makaleler