Arsitektur · Single-origin

Mengapa CodeWise Menggunakan Python Intelligence di Balik Satu Domain

Pengguna cukup membuka CodeWise. Di belakang satu pintu tersebut, setiap runtime tetap diberi tanggung jawab dan batas keamanan yang jelas.

Frontend dan Python tidak harus hidup dalam satu proses untuk terasa sebagai satu aplikasi. Yang dibutuhkan adalah satu kontrak publik: browser hanya berbicara dengan codewise.adanacourse.com, sedangkan seluruh detail backend tetap berada pada sisi server.

Satu domain publik

Halaman, aset, chat, dan fitur analisis menggunakan origin yang sama. Route halaman diteruskan ke hosting frontend, sementara route /api/* ditangani Cloudflare Worker. Pola ini menyederhanakan URL, mengurangi konfigurasi CORS, dan mencegah alamat Python masuk ke frontend.

Browser → codewise.adanacourse.com/api/analysis/*
        → Cloudflare Worker
        → private Python FastAPI
        → Redis dan TypeScript compiler

Worker sebagai security gateway

Worker memvalidasi sesi, quota, ukuran body, timeout, serta route yang diizinkan. Request ke Python diberi timestamp, nonce, body hash, request ID, dan HMAC. Python mengembalikan response proof agar Worker tidak menerima jawaban yang tidak terikat pada request tersebut.

Mengapa Python tetap private runtime?

Analisis repository, compiler intelligence, taint tracking, dan patch validation memiliki kebutuhan resource yang berbeda dari halaman statis. Python juga memerlukan proses FastAPI, dependency lock, dan health lifecycle. Memisahkan runtime memungkinkan scaling dan rollback dilakukan tanpa mengganti seluruh frontend.

Terpisah tidak berarti menjadi aplikasi kedua.Python adalah intelligence plane internal. Pengguna tidak perlu membuka, menyimpan, atau mengelola alamat Python.

Redis sebagai replay authority

Nonce tidak cukup disimpan di memory satu proses ketika terdapat beberapa replica. Redis dengan operasi atomic SET NX EX memastikan request yang sama tidak dapat diputar ulang pada replica lain. Ketika Redis gagal, analysis production harus fail-closed.

Analysis dan execution berbeda

Python dapat siap menganalisis tanpa diizinkan menjalankan arbitrary project commands. Karena itu CodeWise memisahkan analysisReady dan executionReady. Execution baru boleh aktif setelah sandbox, image digest, network isolation, resource limits, dan governance memiliki bukti tersendiri.

Hasil untuk pengguna

Arsitektur ini menghasilkan satu domain, satu pengalaman aplikasi, dan satu alur rilis bagi operator. Kompleksitas runtime tetap ada, tetapi ditempatkan di balik gateway sehingga tidak menjadi kompleksitas pengguna.