Dari RFC ke ADR: Mencapai Keputusan dan Menjaga Alasan
RFC biasanya tentang mencapai kesepakatan; ADR mencatat kesepakatan yang telah dicapai — dan alasan mengapa ADR membusuk adalah karena debat berlangsung di obrolan dan komentar permintaan tarik sementara catatan ditulis setelahnya, dari ingatan, oleh satu orang. Untuk menjalankan alur RFC-ke-ADR sehingga catatan terpisah dari debat: nyatakan proposal sebagai klaim utama (judul ADR di masa depan); tambahkan konteks sebagai argumen pro terpisah sehingga setiap kekuatan dapat ditantang secara individu; berikan setiap opsi yang dipertimbangkan node saudara sendiri dengan pro dan kontra masing-masing — termasuk yang ditolak; jalankan putaran komentar RFC sebagai rantai (rantai Q&A untuk klarifikasi, rantai Tinjauan untuk keberatan — masing-masing adalah dialog empat putaran antara peninjau dan penulis opsi, dengan N peninjau berarti N rantai paralel; rantai Kompromi untuk mendamaikan perpecahan, di mana rantai yang selesai mencatat upaya tersebut apakah berhasil atau tidak); minta pengambil keputusan untuk menilai opsi sebagai bukti di mana posisi berada — penilaian bukanlah keputusan, seorang manusia yang disebut masih menyebutnya; catat konsekuensi yang diterima sebagai anak kontra dari opsi yang dipilih; dan model penggantian dengan menghubungkan keputusan yang lebih baru dengan yang digantikannya, menjaga yang lama tetap dapat dibaca. Menyemai dari ADR markdown yang ada atau transkrip yang berat keputusan bekerja melalui ekstraksi AI dengan asal yang dicap. Batasan yang jujur: ini tidak menggantikan ADR yang dilacak repo (ekspor dan komit catatan); tidak ada bidang status ADR bawaan, jadi diusulkan/diterima/digantikan adalah konvensi yang Anda pertahankan; rantai yang selesai tidak berarti pihak-pihak setuju — yang justru membuat tidak setuju dan berkomitmen dapat dibaca.
RFC biasanya tentang mencapai kesepakatan; ADR mencatat kesepakatan setelah dicapai. ADR membusuk karena proses mencapai kesepakatan terjadi dalam obrolan dan pencatatan terjadi kemudian, dari ingatan. Jalankan keduanya dalam satu struktur:
- Usulan tersebut adalah klaim dasar; kekuatan konteks terpisah, argumen pro yang dapat ditantang; setiap opsi — termasuk yang ditolak — mendapatkan nodenya sendiri
- Ronde RFC adalah rantai: Tanya jawab untuk klarifikasi, Tinjauan untuk keberatan, Kompromi untuk rekonsiliasi — dialog empat putaran, N peninjau = N rantai paralel
- Penilaian bukanlah keputusan: para pengambil keputusan menilai sebagai bukti; seorang manusia yang disebutkan menyebutnya — dan menulis mengapa, terutama terhadap ruangan
- ADR adalah pohon: tidak ada yang ditranskripsikan, jadi tidak ada yang hilang dalam transkripsi — ekspor ke repo jika organisasi Anda memerlukannya
Keputusan yang tidak bisa direkonstruksi oleh siapa pun
Pemimpin teknologi baru mengajukan pertanyaan yang masuk akal: mengapa setiap layanan berkomunikasi dengan sistem penagihan melalui antrean itu? Ada sebuah ADR — ADR-014, empat kalimat, ditulis sebelas bulan yang lalu. Konteks: "kami membutuhkan integrasi penagihan yang dapat diandalkan." Keputusan: "gunakan antrean." Konsekuensi: "beberapa penundaan tambahan." Secara teknis, ini adalah sebuah catatan. Ini tidak menjawab apa-apa.
Anda ada di sana, jadi Anda tahu apa yang tidak dikatakan ADR-014: argumen tiga minggu di dua saluran Slack dan utas PR yang memanas; opsi API-sinkron yang kalah karena batas laju yang sejak itu telah dinaikkan; keberatan insinyur staf yang dijawab dengan tolok ukur yang sekarang tidak bisa ditemukan oleh siapa pun. Perdebatan itu terjadi. Catatan ditulis setelahnya, dari ingatan, oleh satu orang, pada hari Jumat.
Ini adalah mode kegagalan yang terdokumentasi dan hampir universal dari praktik yang benar-benar baik. Panduan preskriptif AWS dan dokumen Well-Architected Microsoft keduanya merekomendasikan ADR — dan keduanya mencatat rasa sakitnya: menjaga agar mereka tetap terkini memerlukan waktu, dan mengelolanya menjadi kompleks seiring tim dan pilihan bertambah. Penyebab utamanya adalah struktural: perdebatan dan catatan berada di tempat yang berbeda, sehingga catatan selalu merupakan transkripsi yang kehilangan informasi. Solusinya adalah membuatnya menjadi tempat yang sama. Praktik ini juga tidak spesifik untuk rekayasa, atau bahkan spesifik untuk ADR. Google mengharuskan adanya dokumen desain — masalah, pendekatan yang diusulkan, alternatif yang dipertimbangkan, trade-off — yang ditulis dan ditinjau sebelum pekerjaan teknis yang signifikan dimulai, praktik yang diatur dalam Rekayasa Perangkat Lunak di Google. Ini adalah disiplin yang sama dengan ADR, diterapkan satu langkah lebih awal: ADR mencatat pilihan yang diperjuangkan oleh dokumen desain. Keduanya gagal dengan cara yang sama karena alasan yang sama, dan keduanya diperbaiki dengan langkah yang sama — pegang argumen di tempat catatan berada, daripada mentranskripsikan satu ke yang lain setelahnya. Bacalah setiap langkah di bawah ini sebagai mencakup kedua artefak.
Mengapa ADR membusuk
Satu kalimat dari materi komunitas ADR sendiri membawa seluruh diagnosis: RFC biasanya tentang mencapai kesepakatan; ADR mencatat kesepakatan setelah dicapai. Dua artefak, dua momen — dan segala sesuatu di antara mereka bocor. Alternatif yang "jelas" salah tidak tercatat (sampai mereka berhenti menjadi jelas). Keberatan yang membentuk desain akhir hanya bertahan sebagai komentar PR di thread yang ditutup. Bagian konteks ditulis terakhir, paling buruk, oleh siapa pun yang kalah dalam permainan tidak-itu. Pertemuan yang seharusnya menghasilkan keputusan justru menghasilkan ringkasan sebagai gantinya, dan alasan yang membuat keputusan tahan lama — hal yang menjadi dasar seluruh rantai kualitas keputusan — adalah tepat apa yang hilang dalam transkripsi.
Apa yang Anda butuhkan
Satu diskusi Argumentree per RFC. Jika Anda memiliki korpus ADR markdown yang ada atau transkrip rapat yang banyak keputusan, unggah itu — ekstraksi AI mengubahnya menjadi argumen pro/con terstruktur dengan kutipan sumber yang dilampirkan, dicap sebagai yang diekstraksi sehingga klaim yang diimpor tidak pernah disalahartikan sebagai yang langsung (cara kerja ekstraksi).
Langkah 1–3: Proposal, konteks, opsi
- 1Nyatakan proposal sebagai klaim utama — keputusan yang diusulkan, bukan pertanyaan: "Kami akan mengarahkan semua penulisan penagihan melalui antrean yang tahan lama." Kalimat ini adalah judul ADR di masa depan. Checkpoint: akar ada, satu kalimat, ditulis oleh pengusul.
- 2Konteks sebagai argumen pro terpisah. Setiap kekuatan yang membuat keputusan itu diperlukan — persyaratan keandalan, batas tarif sistem penagihan, mandat audit — adalah argumen tersendiri di bawah akar. Sebuah paragraf "Konteks" monolitik tidak dapat dipertanyakan; tiga klaim konteks terpisah dapat masing-masing dipertanyakan, dikonfirmasi, atau dibantah secara individu. Checkpoint: ≥2 argumen konteks, masing-masing satu kekuatan.
- 3Setiap opsi mendapatkan nodenya sendiri. Antrian, API sinkron, pekerjaan batch — argumen saudara, masing-masing dengan anak pro dan kontra sendiri. Pro/kontro adalah relatif terhadap induk, jadi kelemahan suatu opsi tergantung pada opsi itu, bukan pada keputusan. Sertakan opsi yang Anda harapkan untuk ditolak: saudara yang ditolak adalah apa yang menjawab "mengapa kita tidak hanya…". Titik pemeriksaan: setiap opsi yang mungkin ditanyakan pembaca ada.
Langkah 4–6: Putaran RFC yang meninggalkan catatan
Sekarang tahap tinjauan — biasanya bagian yang tersebar di obrolan, komentar, dan lorong. Di sini, ini berjalan sebagai tiga jenis pertukaran terstruktur, masing-masing merupakan dialog empat putaran antara peninjau dan penulis opsi:
Rantai Q&A — klarifikasi
"Apa yang terjadi pada klien sinkron yang ada?" Penulis opsi menjawab, peninjau menindaklanjuti, penulis menjawab lagi — lengkap. Tidak ada opsi yang seharusnya membawa pertanyaan yang tidak terjawab ke dalam keputusan.
Tinjauan rantai — objek
Seorang penilai mengevaluasi sebuah opsi sebagai tidak valid; penulis merespons; tindak lanjut; respons. N penilai = N rantai paralel pada opsi yang sama — setiap keberatan adalah pertukaran yang dapat dipertanggungjawabkan sendiri, bukan komentar yang hilang dalam utas bersama.
Rantai kompromi — rekonsiliasi
Dua kamp terpisah? Satu mengusulkan opsi tengah kepada penulis lainnya. Jika itu teratasi, Anda memiliki simpul opsi baru. Jika tidak, rantai yang selesai adalah catatan bahwa itu telah dicoba — yang hampir sama berharganya.
Selesai ≠ disetujui
Sebuah rantai yang mencapai selesai berarti pertukaran telah berlangsung — pertanyaan diajukan dan dijawab dua kali — bukan berarti pihak-pihak tersebut setuju. Pertahankan perbedaan itu; itu akan menjadi penting.
Langkah 7: Memutuskan — dan apa yang bukan penilaian
Pengambil keputusan menilai opsi: satu diberi label penilaian masing-masing. Distribusi adalah bukti yang sah — di mana ruangan berdiri, tercatat, sebelum panggilan. Tetapi penilaian bukanlah keputusan. Seorang manusia yang disebutkan masih memutuskan, dan jika panggilan bertentangan dengan distribusi, simpul keputusan adalah tempat itu dijelaskan. (Siapa manusia yang disebutkan itu, dan bagaimana menetapkan peran sebelum debat daripada setelahnya, adalah disiplin tersendiri — lihat tutorial hak keputusan.)
Pertanyaan untuk tim Anda
Siapa yang memutuskan keputusan arsitektur terakhir Anda — dan dapatkah Anda membuktikannya? Bukan siapa yang ada di pertemuan: siapa yang memiliki keputusan tersebut, dan di mana alasan mereka dituliskan?
Langkah 8–9: ADR yang tidak perlu Anda tulis
Inilah hasilnya. Catatan tersebut bukanlah dokumen yang Anda tulis setelahnya — itu adalah node dari opsi yang dipilih ditambah semua yang sudah terlampir padanya: argumen konteks (Context), saudara yang ditolak (Options Considered), rantai yang telah diselesaikan (diskusi, dengan penulis), penilaian (di mana posisi ruangan), dan argumen keputusan beserta alasannya (Decision). Tidak ada yang ditranskripsikan, jadi tidak ada yang hilang dalam transkripsi.
- 1Catat konsekuensi yang Anda terima. Kekurangan yang diketahui — latensi tambahan, beban operasional dari antrean — terus berlanjut sebagai anak-anak dari opsi yang dipilih, diakui oleh pengambil keputusan. Menuliskannya adalah apa yang menjadikannya sebuah keputusan daripada sekadar preferensi. Checkpoint: ≥1 konsekuensi yang diterima tercatat.
- 2Ekspor jika organisasi Anda memerlukan ADR yang dilacak oleh repositori. Banyak yang memang memerlukannya, dengan benar — ADR markdown di samping kode tetap menjadi artefak kepatuhan. Tulis ringkasan empat bagian dari pohon (lima menit, bukan hari Jumat), tautkan kembali ke diskusi untuk perdebatan lengkap. Checkpoint: ADR repositori mengacu pada pohon; pohon menyimpan alasan.
Tidak setuju dan berkomitmen, secara resmi
Pola yang membuat Amazon terkenal — tidak setuju dan berkomitmen — memiliki masalah keterbacaan: bagaimana seseorang tahu kemudian bahwa ketidaksetujuan itu nyata, didengar, dan dijawab, daripada diabaikan? Mekanika rantai menjawabnya. Rantai Tinjauan yang menjalani empat putaran penuh dan diselesaikan tanpa kesepakatan adalah bukti yang tepat: keberatan diajukan, dijawab, ditekan, dan dijawab lagi, secara resmi, sebelum pihak yang tidak setuju berkomitmen. Pihak yang tidak setuju didokumentasikan telah didengar — yang membuat komitmen setelahnya menjadi masuk akal daripada sekadar patuh.
Jangan membaca penyelesaian sebagai konsensus
Selesai berarti pertukaran telah selesai, bukan berarti ada yang berubah pikiran. Jika Anda melaporkan penyelesaian rantai sebagai kesepakatan, Anda akan menciptakan konsensus palsu dan menghancurkan kepercayaan yang ada untuk dibangun. Bacaan yang jujur: dikonsultasikan, dijawab, masih menentang, tetap berkomitmen — semua empat fakta terlihat.
Langkah 10: Menggantikan tanpa menghapus
Keputusan berumur. Ketika batas laju yang membunuh opsi sinkron dinaikkan, langkah yang tepat adalah keputusan baru yang merujuk pada yang digantikan — argumen baru yang terhubung ke node ADR-014, menyatakan apa yang berubah. Keputusan lama tetap dapat dibaca; alasannya adalah tepat mengapa keputusan baru tahu apa yang dibatalkannya.
Satu celah jujur yang perlu dikelola secara eksplisit: tidak ada kolom status ADR bawaan. Diusulkan / diterima / digantikan bukanlah status kelas satu dalam sebuah argumen — penggantian dimodelkan dengan penghubungan, dan konvensi tersebut adalah milik Anda untuk dipertahankan. Nyatakan dalam kesepakatan kerja tim Anda daripada mengasumsikan produk menegakkannya.
Batasan yang jujur
- ✗Ini tidak menggantikan ADR di repositori Anda jika organisasi Anda memerlukan mereka dikendalikan versi di samping kode. Ekspor dan komit ringkasan; gunakan pohon untuk bagian yang buruk dalam markdown — perdebatan.
- ✗Tidak ada kolom status ADR. Diusulkan/diterima/digantikan adalah konvensi penghubung yang Anda pertahankan, bukan sesuatu yang ditegakkan oleh produk.
- ✗Sebuah rantai adalah empat putaran. Ketidaksepakatan arsitektural yang mendalam akan memerlukan panggilan; rantai adalah catatan dari apa yang sudah dicoba sebelumnya.
- ✗Penilaian adalah nilai berlabel tunggal, bukan skor multi-kriteria yang berbobot.
- ✗Itu tidak membuat siapa pun menulis konteks yang baik. Struktur menurunkan biaya catatan yang baik; itu tidak menyediakan penilaian.
Pelajaran praktis
- ✓Satu RFC, satu diskusi. Tahan pohon mega yang menutupi seluruh arsitektur kuartal — tautan supersesi menghubungkan keputusan lebih baik daripada pengelompokan.
- ✓Benih dari apa yang ada. Transkrip yang penuh keputusan atau folder ADR lama Anda, yang diekstrak, memberikan debat awal yang baik — dilabeli sebagai diimpor, sehingga argumen langsung tetap dapat dibedakan.
- ✓Letakkan nama peninjau di rantai mereka dan biarkan di sana. Atribusi adalah akuntabilitas; keberatan arsitektural anonim menjadi folklore.
- ✓Bagian konsekuensi adalah milik pengambil keputusan, bukan milik orang lain. Kerugian yang diterima yang ditulis oleh orang yang menerimanya memiliki bobot yang berbeda dibandingkan dengan peringatan dari peninjau.
ADR-014, versi yang menjawab
Kembali ke pertanyaan pemimpin teknologi yang baru. Dalam versi yang dibangun kembali, ADR-014 adalah sebuah node: keputusan antrean dengan alasannya, tiga kekuatan konteks (satu sekarang sudah usang — terlihat), saudara API sinkron yang ditolak yang nama fatalnya menyebutkan batas laju lama, empat rantai Tinjauan yang telah diselesaikan termasuk milik insinyur staf, dan tolok ukur yang dilampirkan sebagai bukti. Pemimpin teknologi membaca selama sepuluh menit, melihat batas laju telah diubah, dan membuka proposal yang menggantikan yang terhubung ke node lama. Tidak ada yang menggali Slack. Itulah seluruh janji: rantai mencapai kesepakatan, pohon mencatatnya — dan catatan tersebut menjawab pertanyaan yang tidak Anda ketahui akan ditanyakan.
Sumber & bacaan lebih lanjut
- Nygard, M. (2011). Mendokumentasikan Keputusan Arsitektur. Blog Cognitect.Esai yang mempopulerkan ADR: konteks, keputusan, konsekuensi, sesuai dengan kode.
- Panduan Preskriptif AWS — Catatan keputusan arsitektur.Framing RFC-vs-ADR dan masalah pemeliharaan yang terdokumentasi yang ada dalam tutorial ini untuk diperbaiki.
- Microsoft Azure Well-Architected Framework — Catatan keputusan arsitektur.Praktik ADR dalam konteks tinjauan Well-Architected.
- Organisasi ADR GitHub (adr.github.io).Template, alat, dan konvensi yang terakumulasi dalam komunitas — termasuk praktik status-field yang dimodelkan tutorial ini dengan menghubungkan.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara RFC dan ADR?
RFC (permintaan untuk komentar) adalah proses mencapai kesepakatan: sebuah proposal disebarluaskan, alternatif diperdebatkan, keberatan diajukan dan dijawab. ADR (catatan keputusan arsitektur) mencatat kesepakatan yang telah dicapai: konteks, opsi yang dipertimbangkan, keputusan, konsekuensi, status. Mode kegagalan menjalankannya sebagai artefak terpisah adalah bahwa segala sesuatu di antara mereka bocor — debat berlangsung di obrolan dan komentar PR sementara catatan ditulis setelahnya dari ingatan. Menjalankan RFC sebagai pohon argumen terstruktur membuat ADR terpisah dari debat itu sendiri: tidak ada yang ditranskripsikan, jadi tidak ada yang hilang dalam transkripsi.
Mengapa ADR menjadi kadaluarsa atau berhenti ditulis?
Karena menulisnya adalah pekerjaan transkripsi. Alasan yang sebenarnya terjadi dalam thread Slack, komentar ulasan, dan pertemuan; setelah itu satu orang merekonstruksi bagian Konteks dari ingatan, biasanya secara singkat dan terakhir. Panduan dari AWS dan Microsoft sendiri mencatat kesulitan: ADR membutuhkan waktu untuk ditulis dan diperbarui, dan manajemen menjadi kompleks seiring dengan bertambahnya keputusan. Tim tidak berhenti percaya pada ADR — mereka berhenti membayar pajak transkripsi. Membuat debat dan catatan dalam struktur yang sama menghilangkan pajak tersebut.
Bagaimana cara menjalankan putaran tinjauan RFC dengan catatan?
Tiga langkah terstruktur, masing-masing merupakan dialog empat putaran dengan penulis opsi. Rantai tanya jawab untuk klarifikasi: pertanyaan, jawaban, tindak lanjut, jawaban. Rantai ulasan untuk keberatan: evaluasi, respons, tindak lanjut, respons — dengan N peninjau membuka N rantai paralel pada opsi yang sama daripada satu utas bersama, sehingga setiap keberatan tetap dapat dipertanggungjawabkan dan dijawab. Rantai kompromi untuk perpecahan: satu sisi mengusulkan posisi tengah kepada yang lain, dan apakah itu menyelesaikan atau tidak, rantai yang diselesaikan mencatat bahwa itu telah dicoba. Titik pemeriksaan sebelum memutuskan: tidak ada opsi yang membawa pertanyaan yang tidak terjawab, dan setiap keberatan substantif ada sebagai rantai yang diselesaikan.
Bagaimana 'tidak setuju dan berkomitmen' bekerja dengan catatan keputusan?
Mekanika rantai membuatnya dapat dibaca. Rantai Tinjauan yang menjalani seluruh prosesnya — keberatan, tanggapan, tindak lanjut, tanggapan — dan selesai tanpa kesepakatan adalah bukti bahwa ketidaksetujuan itu nyata, didengar, dan dijawab sebelum pihak yang tidak setuju berkomitmen. Secara kritis, selesai tidak berarti disetujui: itu berarti pertukaran telah selesai. Melaporkan penyelesaian sebagai konsensus menciptakan kesepakatan palsu dan menghancurkan nilai mekanisme tersebut. Catatan yang jujur menunjukkan empat fakta sekaligus: dikonsultasikan, dijawab, masih menentang, tetap berkomitmen — yang tepatnya membuat komitmen setelah ketidaksetujuan menjadi masuk akal.
Apakah catatan keputusan harus menggantikan ADR di repositori kode?
Tidak — dan tutorial ini menyatakannya secara eksplisit. Jika organisasi Anda memerlukan ADR yang terkontrol versi di samping kode (banyak yang melakukannya, dengan benar, untuk kepatuhan dan akses offline), simpanlah: tulis ringkasan markdown empat bagian dari pohon dalam lima menit dan tautkan kembali ke diskusi. Pembagian kerja ini jelas: ADR repositori adalah artefak kepatuhan yang tahan lama; pohon menyimpan apa yang buruk dalam markdown — debat langsung, opsi yang ditolak beserta alasannya, keberatan dan jawabannya, serta penilaian.
Bagaimana cara menandai ADR sebagai yang digantikan?
Menurut konvensi, bukan berdasarkan bidang — dan penting untuk jujur bahwa tidak ada status yang diusulkan/diterima/digantikan yang terintegrasi pada sebuah argumen. Model penggantian dengan membuat keputusan baru sebagai argumen tersendiri yang terhubung dengan argumen yang digantikannya, menyatakan apa yang berubah (batas tarif yang ditingkatkan, persyaratan baru). Keputusan lama tetap dapat dibaca — menghapusnya akan menghancurkan tepatnya alasan yang perlu dirujuk oleh keputusan baru. Nyatakan konvensi dalam kesepakatan kerja tim Anda agar dipertahankan secara sengaja.
Hentikan mentranskripsikan keputusan. Mulailah menyimpannya.
Jalankan RFC Anda berikutnya sebagai pohon: opsi dengan alasan mereka, keberatan sebagai rantai yang dijawab, dan ADR yang menulis dirinya sendiri.
Mulai Uji Coba Gratis 14 Hari