15.3 Constraint: Batasan yang Membantu AI Memberi Jawaban Lebih Tajam

Setelah konteks terpilih, langkah berikutnya adalah merumuskan constraint yang membatasi solusi. Seorang arsitek yang saya kenal pernah bercerita tentang pengalamannya meminta AI merancang arsitektur sistem untuk aplikasi logistik. Ia memberikan konteks lengkap: perusahaan bergerak di bidang pengiriman barang, memiliki seribu pengguna harian, dan ingin mengintegrasikan tiga mitra kurir. AI memberikan jawaban yang sangat elegan: microservices dengan event-driven architecture, Kafka sebagai message broker, Redis untuk caching, dan Kubernetes untuk orchestration. Semua terdengar indah.

Masalahnya, timnya hanya terdiri dari empat engineer yang sebagian besar masih belajar Golang. Biaya server bulanan untuk infrastruktur yang direkomendasikan AI akan menghabiskan setengah anggaran IT. Timeline delivery yang diminta hanya tiga bulan. Dan perusahaan belum memiliki DevOps engineer yang bisa mengelola Kubernetes.

AI tidak tahu semua itu karena ia tidak diberi constraint.

Constraint adalah batasan nyata yang membuat solusi tidak bisa melayang ke ranah ideal. Tanpa constraint, AI akan selalu memberikan jawaban yang secara teknis sempurna tetapi secara praktis tidak bisa dijalankan. Sama seperti seorang konsultan yang memberi saran tanpa tahu anggaran kliennya, AI butuh tahu apa yang tidak boleh dilanggar.

Constraint yang perlu diberikan bermacam-macam. Biaya adalah yang paling umum: berapa budget untuk infrastruktur, lisensi, atau pengembangan. Latency: apakah sistem harus merespon dalam milidetik atau detik. Security: apakah data yang diproses termasuk sensitif dan butuh enkripsi khusus. Maintainability: apakah tim mampu merawat teknologi yang direkomendasikan dalam jangka panjang. Skill tim: teknologi apa yang sudah dikuasai dan apa yang masih perlu dipelajari. Timeline: kapan solusi harus selesai. Platform: apakah sistem harus berjalan di cloud, on-premise, atau hybrid. Policy: apakah ada regulasi internal atau eksternal yang membatasi pilihan teknologi.

Misalnya, constraint biaya dan keterbatasan skill tim bisa diterjemahkan ke dalam konfigurasi Kubernetes seperti berikut:

apiVersion: v1
kind: Pod
metadata:
  name: app-logistik
spec:
  containers:
  - name: app
    image: app-logistik:1.0
    resources:
      requests:
        memory: "256Mi"
        cpu: "250m"
      limits:
        memory: "512Mi"
        cpu: "500m"
  nodeSelector:
    kubernetes.io/instance-type: t3.medium
  tolerations:
  - key: "budget"
    operator: "Equal"
    value: "low"
    effect: "NoSchedule"

Semakin spesifik constraint yang diberikan, semakin tajam jawaban AI. Misalnya, daripada berkata "biaya terbatas", lebih baik katakan "budget infrastruktur maksimal lima juta per bulan". Daripada "tim tidak terlalu ahli", lebih baik katakan "tim menguasai Python dan PostgreSQL, belum pernah pakai Kubernetes".

Constraint juga membantu AI melakukan trade-off. Ketika AI tahu bahwa timeline ketat dan tim kecil, ia tidak akan merekomendasikan arsitektur yang membutuhkan setup infrastruktur rumit. Ia akan mencari jalan tengah: mungkin cukup dengan monolithic yang di-refactor bertahap, atau menggunakan platform-as-a-service yang mengurangi beban operasional. Tanpa constraint, AI tidak punya dasar untuk memilih antara kecepatan development dan skalabilitas jangka panjang.

Memberikan constraint bukan berarti membatasi kreativitas. Sebaliknya, constraint mengarahkan AI pada solusi yang realistis dan bisa dieksekusi. Seorang arsitek yang baik tahu bahwa solusi terbaik bukanlah yang paling canggih, melainkan yang paling cocok dengan situasi organisasi.

Setelah constraint dirumuskan, langkah selanjutnya adalah membandingkan beberapa opsi solusi dengan aturan yang sama. Itu menjadi fokus subbab berikutnya: bagaimana meminta AI mengevaluasi alternatif dengan constraint yang seragam, sehingga manusia bisa membandingkan secara adil dan memilih yang paling sesuai.