19.6 Governance sebagai Kontrol Kerja, Bukan Hambatan
Setelah platform siap dan beban pikiran berkurang, organisasi tetap perlu menjaga agar keputusan arsitektur tidak dilanggar. Governance hadir sebagai kontrol kerja, bukan sebagai hambatan.
Saya sering mendengar keluhan bahwa governance memperlambat segalanya. Seorang arsitek pernah bercerita bahwa timnya harus menunggu tiga hari hanya untuk mendapatkan persetujuan pemakaian database tertentu. Persetujuan itu datang dalam bentuk email satu kalimat: "Disetujui." Tidak ada catatan, tidak ada pertimbangan, tidak ada jejak keputusan. Tiga hari untuk satu kalimat.
Masalahnya bukan pada governance-nya, tetapi pada cara governance dijalankan. Ketika persetujuan dilakukan secara manual, lambat, dan tanpa konteks, governance memang terasa seperti birokrasi. Tapi ketika governance dirancang sebagai sistem kontrol yang terintegrasi dengan alur kerja, ia justru menjaga kecepatan.
Salah satu cara membuat governance bekerja tanpa memperlambat adalah policy as code. Alih-alih menulis aturan arsitektur dalam dokumen PDF yang tidak pernah dibaca, aturan dituliskan sebagai kode yang bisa diperiksa secara otomatis. Misalnya, setiap service harus memiliki health endpoint, logging terstruktur, dan batas maksimal dependency. Aturan ini bukan sekadar himbauan—mereka dijalankan oleh jalur pemrosesan CI/CD. Jika sebuah service melanggar aturan, jalur pemrosesan gagal sebelum masuk ke production. Tim tidak perlu menunggu reviewer manusia. Mereka langsung tahu apa yang salah dan bisa memperbaiki.
Berikut contoh aturan dalam Rego (Open Policy Agent) yang memeriksa ketiga persyaratan tersebut:
package service.rules
# Setiap service wajib memiliki endpoint /health
health_endpoint_exists[reason] {
input.endpoints[_] != "/health"
reason = "Service tidak memiliki endpoint /health"
}
# Logging harus dalam format JSON
logging_is_structured[reason] {
input.logging.format != "json"
reason = "Logging tidak menggunakan format JSON"
}
# Dependency eksternal maksimal 5
dependency_limit_exceeded[reason] {
count(input.dependencies) > 5
reason = sprintf("Jumlah dependency (%d) melebihi batas maksimal 5", [count(input.dependencies)])
}
# Gabungan semua pelanggaran
violations[reason] {
reason = health_endpoint_exists[_]
}
violations[reason] {
reason = logging_is_structured[_]
}
violations[reason] {
reason = dependency_limit_exceeded[_]
}
Diagram berikut membandingkan dua jalur governance: manual dan otomatis.
Policy as code mengubah governance dari proses review menjadi proses verifikasi. Manusia tetap terlibat untuk keputusan yang membutuhkan pertimbangan, tetapi keputusan rutin diotomatisasi.
Keputusan arsitektur sendiri perlu dicatat dengan cara yang bisa dilacak. ADR yang sudah dibahas di Bab 8 menjadi decision log untuk governance: bukan hanya mencatat pilihan teknis, tetapi juga memberi dasar kenapa sebuah aturan, persetujuan, atau pengecualian dibuat. Di sini ADR tidak perlu dijelaskan ulang sebagai format dokumen; yang penting adalah perannya sebagai bukti keputusan dalam alur delivery.
Saya pernah bekerja dengan tim yang tidak punya decision log. Ketika ada anggota tim baru bertanya mengapa arsitekturnya seperti itu, jawabannya selalu, "Sudah dari dulu seperti ini." Tidak ada yang tahu alasan di balik keputusan itu. Ketika tim ingin mengubah arsitektur, mereka tidak punya dasar untuk mengevaluasi apakah perubahan itu aman. Decision log mengubah situasi ini: setiap keputusan punya konteks, dan setiap perubahan punya dasar.
Selain ADR, organisasi juga perlu audit trail. Audit trail bukan untuk mengejar kesalahan, tetapi untuk menjawab pertanyaan: siapa yang memutuskan apa, kapan, dan berdasarkan apa. Audit trail yang baik memungkinkan organisasi bergerak lebih cepat karena setiap keputusan bisa dipertanggungjawabkan. Jika ada masalah, tim tidak perlu mengulang investigasi dari awal. Mereka bisa langsung melihat jejak keputusan dan mencari tahu di mana celahnya.
Persetujuan berbasis dampak melengkapi sistem ini. Tidak semua perubahan perlu persetujuan yang sama. Perubahan kecil yang dampaknya terbatas bisa langsung dijalankan. Perubahan besar yang mempengaruhi banyak sistem perlu review lebih ketat. Persetujuan berbasis dampak menggunakan informasi dari ADR dan audit trail untuk menentukan tingkat review yang diperlukan. Semakin besar dampak, semakin ketat review-nya. Semakin kecil dampak, semakin cepat jalurnya.
Governance yang dirancang dengan baik tidak menghambat. Ia memberi organisasi kepercayaan diri untuk bergerak cepat karena setiap keputusan tercatat, setiap aturan terverifikasi, dan setiap perubahan terukur. Tanpa governance, kecepatan hanya ilusi. Dengan governance yang tepat, kecepatan menjadi nyata dan berkelanjutan.
Subbab berikutnya akan merangkum bagaimana delivery, platform, dan governance bekerja sebagai satu sistem yang saling memperkuat.