Common Gateway Interface ( CGI ), sebuah teknologi web dari tahun 1990-an yang sebahagian besarnya ditinggalkan kerana terlalu perlahan, kini mengalami minat yang diperbaharui dalam kalangan pembangun. Ujian terkini menunjukkan bahawa CGI boleh mengendalikan beban yang mengagumkan pada perkakasan moden, mencabar kepercayaan lama mengenai batasannya.
Eksperimen Jake Gold menunjukkan bahawa program CGI berasaskan Go yang berjalan pada pemproses AMD 3700X 16-thread boleh melayani lebih daripada 2,400 permintaan sesaat, yang diterjemahkan kepada lebih daripada 200 juta permintaan harian. Tahap prestasi ini meletakkan CGI kembali dalam pertandingan untuk aplikasi web yang serius, sesuatu yang kelihatan mustahil beberapa tahun yang lalu.
Metrik Prestasi:
- Permintaan sesaat: 2,400+
- Kapasiti permintaan harian: 200+ juta
- Perkakasan ujian: Pemproses 16-benang AMD 3700X
- Pelaksanaan: Program CGI Go + SQLite
Masalah Asal dan Mengapa Ia Berterusan
CGI berfungsi dengan mencipta proses baharu untuk setiap permintaan web - memulakan program, menjalankannya, dan kemudian menutupnya sepenuhnya. Pada akhir 1990-an, pendekatan ini terbukti sangat perlahan, membawa pembangun untuk mencipta alternatif seperti mod_php PHP dan FastCGI untuk mengekalkan kod berjalan dalam memori antara permintaan.
Perbincangan komuniti mendedahkan betapa mendalam pengajaran ini tertanam dalam pemikiran pembangun. Ramai pengaturcara menghabiskan dekad mengelakkan corak proses-per-permintaan, yakin bahawa ia cacat secara asasnya. Walau bagaimanapun, kepercayaan ini berdasarkan kepada batasan pengkomputeran tahun 1990-an dan bukannya sebarang masalah yang wujud dengan pendekatan itu sendiri.
Konteks Sejarah:
- Masalah asal: Overhed penciptaan proses pada perkakasan tahun 1990-an
- Bahasa warisan: Perl , Python , Java (masa permulaan yang perlahan)
- Bahasa moden: Go , Rust (masa permulaan yang pantas)
- Isu keselamatan: Kelemahan Shellshock (2014), kebimbangan pengesahan input
Kelebihan Moden Muncul
Landskap pengkomputeran hari ini telah berubah secara dramatik. Pelayan kini lazimnya mempunyai beratus-ratus thread CPU, dan bahkan mesin maya kecil biasanya mempunyai 16 teras. Lebih penting lagi, bahasa seperti Go dan Rust bermula dengan lebih pantas daripada skrip Perl , Python , dan Java yang mendominasi pembangunan web awal.
Model proses-per-permintaan sebenarnya menawarkan beberapa kelebihan yang menarik dalam persekitaran moden. Setiap permintaan berjalan dalam pengasingan lengkap, menghapuskan risiko keselamatan yang datang daripada keadaan berkongsi antara permintaan. Pengasingan ini juga menjadikan program CGI sangat baik dalam menggunakan berbilang teras CPU secara serentak.
Yang paling penting, program CGI , kerana ia berjalan sebagai proses berasingan, sangat baik dalam mengambil kesempatan daripada banyak CPU !
Perdebatan Keselamatan dan Prestasi
Minat yang diperbaharui dalam CGI telah mencetuskan perdebatan mengenai implikasi keselamatannya. Pengkritik menunjukkan kepada sejarah kelemahan keselamatan CGI , termasuk kecenderungannya kepada pepijat Shellshock pada tahun 2014. Walau bagaimanapun, penyokong berhujah bahawa isu-isu ini berpunca daripada amalan pengesahan input yang lemah dan bukannya kelemahan asas dalam protokol CGI itu sendiri.
Perbandingan prestasi juga menjana perbincangan. Walaupun program Go menggunakan pendekatan tradisional boleh dengan mudah melebihi 10,000 permintaan sesaat, tidak setiap aplikasi memerlukan prestasi yang melampau. Faedah kesederhanaan dan pengasingan CGI mungkin mengatasi kelajuan mentah untuk banyak kes penggunaan.
CGI berbanding Alternatif Moden:
- Kelebihan CGI: Pengasingan proses yang lengkap, penggunaan berbilang teras yang sangat baik
- Pendekatan tradisional: 10,000+ permintaan/saat boleh dicapai dengan Go
- Pertukaran: Keselamatan dan kesederhanaan berbanding prestasi mentah
- Kes penggunaan: Prototaip pantas, aplikasi poliglot, sambungan pelanggan
Aplikasi Praktikal Hari Ini
Kebangkitan semula CGI bukan sekadar rasa ingin tahu akademik. Pembangun menemui aplikasi praktikal, terutamanya untuk prototaip pantas dan mencipta aplikasi web polyglot di mana bahasa pengaturcaraan yang berbeza mengendalikan laluan URL yang berbeza. Pendekatan ini juga berfungsi dengan baik untuk membenarkan pelanggan memperluaskan perisian dengan kod tersuai tanpa rangka kerja integrasi yang kompleks.
Pelayan web moden seperti h2o menerima trend ini, menawarkan fail konfigurasi yang bersih yang menjadikan penggunaan CGI mudah. Sesetengah pembangun bahkan melihat CGI sebagai asas yang lebih baik untuk pengkomputeran tanpa pelayan daripada fungsi lambda proprietari, kerana ia berdasarkan standard terbuka dan bukannya pelaksanaan khusus vendor.
Kemunculan semula CGI mewakili contoh yang menarik tentang bagaimana teknologi yang berubah boleh memulihkan pendekatan yang kelihatan usang. Walaupun ia mungkin tidak menggantikan rangka kerja web moden sepenuhnya, sifat kesederhanaan dan pengasingan CGI menjadikannya berbaloi untuk dipertimbangkan semula untuk aplikasi khusus.
Rujukan: Serving 200 million requests per day with a cgi-bin
