Apa Itu Serverless? Pengkomputeran Serverless Dijelaskan Ringkas
Serverless ialah cara menjalankan kod tanpa anda menyediakan atau menguruskan sebarang pelayan sendiri. Anda menyerahkan kod anda kepada pembekal awan, dan ia hanya dijalankan apabila sesuatu mencetuskannya — permintaan web, fail yang dimuat naik, pemberitahuan pembayaran — kemudian berhenti. Biasanya anda membayar untuk masa kod anda sebenarnya berjalan, bukan untuk mesin yang terbiar.
Mengapa serverless penting apabila membina dengan AI
Apabila anda membina app dengan AI dan melihat pilihan hosting atau kod, anda akan berjumpa “serverless functions”, “edge functions” atau “cloud functions”. Banyak platform hosting menawarkannya, dan sesetengah pembina AI menggunakan backend dengan cara ini. Memahami model ini membantu anda menjawab tiga soalan praktikal:
- Kos. Adakah app anda akan menelan belanja walaupun tiada siapa menggunakannya?
- Kelajuan. Mengapa permintaan pertama selepas tempoh senyap lebih perlahan?
- Had. Mengapa tugasan panjang — menjana laporan besar, memproses video — tamat masa?
Ia juga membantu untuk tahu apa yang serverless bukan: ia bukan ketiadaan backend. Anda masih mempunyai kod sisi pelayan; orang lain hanya menjalankan mesinnya. Untuk asas, lihat apa itu pelayan.
Analogi harian
Pelayan tradisional seperti memiliki kereta. Ia sentiasa ada, sedia untuk digunakan serta-merta, tetapi anda membayarnya — insurans, tempat letak, penyelenggaraan — sama ada anda memandunya atau tidak.
Serverless seperti memanggil teksi. Anda hanya membayar untuk perjalanan yang anda buat, dan jika seratus orang perlukan tumpangan serentak, seratus teksi akan datang. Tetapi mungkin ada tunggu sebentar untuk kereta tiba (cold start), setiap perjalanan mempunyai tempoh maksimum, dan pemandu tidak mengingati anda dari tumpangan terakhir (fungsi adalah stateless).
Cara fungsi serverless berfungsi
Dalam bentuk yang paling biasa, yang dipanggil functions as a service:
- Anda menulis satu fungsi — sekeping kod kecil yang mengendalikan satu jenis peristiwa, seperti “kendalikan POST ke
/api/bookings.” - Anda melancarkannya. Pembekal menyimpannya dan menyambungkannya kepada pencetus: URL, jadual, fail baharu dalam storan, mesej dalam baris gilir.
- Peristiwa tiba. Pembekal memulakan salinan fungsi anda (atau menggunakan semula satu yang sudah panas), menjalankannya dan memulangkan hasilnya.
- Ia meningkat secara automatik. Jika seribu permintaan tiba sekaligus, pembekal menjalankan banyak salinan secara selari, sehingga had akaun anda.
- Ia terbiar. Apabila trafik berhenti, salinan dimatikan. Apabila tiada apa yang berjalan, anda tidak membayar untuk pengkomputeran.
Fungsi serverless kecil dalam JavaScript mungkin kelihatan seperti ini:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Hello, ${name}` });
}
Tiada kod untuk memulakan pelayan, membuka port atau mengekalkan proses yang berjalan. Platform mengendalikan semua itu.
“Serverless” juga digunakan secara lebih longgar untuk perkhidmatan terurus lain yang meningkat secara automatik dan dicaj mengikut penggunaan — contohnya pangkalan data serverless, yang berjeda apabila terbiar.
Istilah utama
| Istilah | Maksud |
|---|---|
| Fungsi (FaaS) | Unit kod kecil yang dijalankan pembekal atas permintaan. |
| Pencetus / peristiwa | Apa yang memulakan fungsi — permintaan HTTP, muat naik fail, pemasa, mesej baris gilir. |
| Cold start | Kelewatan apabila salinan baharu fungsi perlu dimulakan sebelum mengendalikan permintaan. |
| Warm | Salinan yang sudah berjalan dan boleh bertindak balas serta-merta. |
| Stateless | Fungsi tidak menyimpan ingatan antara larian. Apa-apa yang mesti kekal disimpan dalam pangkalan data atau storan. |
| Timeout | Masa maksimum yang dibenarkan untuk satu larian. Contohnya, had maksimum AWS Lambda ialah 15 minit; kebanyakan platform lalai kepada masa yang jauh lebih pendek. |
| Edge function | Fungsi yang dijalankan di banyak lokasi dekat pengguna, selalunya dengan had yang lebih ketat. |
| Scale to zero | Tidak menjalankan apa-apa, dan tidak membayar untuk pengkomputeran, apabila tiada trafik. |
Contoh kerja: laman tempahan kecil
Laman tempahan sebuah studio yoga mendapat lonjakan lawatan setiap petang Ahad apabila jadual baharu dimuat naik, dan sangat sedikit sepanjang minggu yang lain.
- Pada pelayan yang sentiasa hidup, studio membayar untuk mesin 24/7, bersaiz untuk puncak petang Ahad, dan kebanyakannya terbiar pada masa lain.
- Dengan fungsi serverless,
GET /api/classesdanPOST /api/bookingsialah fungsi. Kesesakan Ahad secara automatik memulakan banyak salinan; pada pagi Selasa yang senyap, hampir tiada apa yang berjalan dan bil hampir sifar.
Pertukaran juga akan kelihatan. Orang pertama yang membuka laman pada pagi Selasa mungkin menunggu sedikit lebih lama untuk cold start. Pangkalan data perlu mengendalikan banyak sambungan pendek daripada banyak salinan fungsi, yang mungkin memerlukan pengumpul sambungan. Dan jika studio kemudian mahukan tugasan “jana PDF kehadiran tahunan semua orang”, ia mungkin melebihi had masa fungsi dan perlu dijalankan di tempat lain.
Bila serverless sesuai — dan bila tidak
| Sesuai | Kurang sesuai |
|---|---|
| Trafik yang rendah, berlonjak atau tidak dapat diramal | Trafik berat yang berterusan, di mana yang sentiasa hidup mungkin lebih murah |
| Tugasan permintaan/respons yang pendek: API, pengendali borang, webhook | Tugasan jangka panjang: pemprosesan video besar, import data besar |
| Pasukan kecil yang tidak mahu menguruskan pelayan | App yang mengekalkan sambungan langsung terbuka (sesetengah ciri sembang atau berbilang pemain), melainkan platform menyokongnya |
| Pengendalian peristiwa: “apabila fail dimuat naik, buat imej kecil” | App yang memerlukan banyak memori dikekalkan antara permintaan |
Salah faham yang biasa
- “Serverless bermaksud tiada backend.” Ia bermaksud tiada pelayan untuk diuruskan. Anda tetap menulis dan melindungi kod backend.
- “Serverless sentiasa lebih murah.” Murah pada jumlah yang rendah, tetapi harga setiap permintaan boleh bertambah pada jumlah yang tinggi dan stabil.
- “Serverless boleh meningkat tanpa had.” Platform mempunyai had serentak, dan pangkalan data anda mungkin menjadi kesesakan jauh sebelum fungsi itu sendiri.
- “Fail yang disimpan dalam fungsi akan ada pada kali seterusnya.” Storan tempatan bersifat sementara. Gunakan pangkalan data atau storan fail.
- “Scale-to-zero sama dengan serverless.” Berkaitan tetapi tidak sama. Sesetengah platform menjalankan app anda sebagai pelayan biasa yang tidur apabila terbiar dan bangun pada permintaan seterusnya — penjimatan yang serupa dan kelewatan permintaan pertama yang serupa, tetapi tanpa had masa setiap permintaan seperti fungsi.
Apa yang perlu diminta daripada pembina AI anda
- “Adakah backend ini akan berjalan sebagai fungsi serverless atau sebagai pelayan yang sentiasa hidup atau tidur? Apa maksudnya untuk kos?”
- “Adakah mana-mana tugasan mungkin mengambil masa lebih lama daripada had masa platform? Jika ya, bagaimana kita patut mengendalikannya?”
- “Simpan semua yang mesti kekal dalam pangkalan data atau storan fail, bukan dalam memori atau fail tempatan.”
- “Bagaimana sambungan pangkalan data patut diuruskan jika banyak salinan berjalan serentak?”
- “Berapakah kelewatan pada permintaan pertama selepas app tidak digunakan?”
Bagaimana Mythex menghoskan app
Mythex tidak menerangkan hostingnya sebagai fungsi serverless. Apabila anda menerbitkan, app anda berjalan sebagai app web atau kontena biasa yang Mythex uruskan untuk anda — tiada hosting yang perlu disediakan. Ia adalah scale-to-zero: app yang diterbitkan dan pangkalan datanya tidur apabila terbiar dan bangun pada lawatan seterusnya, app yang tidur tidak membelanjakan apa-apa untuk pengkomputeran, dan mesin tambahan hanya bermula apabila trafik berat (Pro membenarkan sehingga 3 setiap perkhidmatan). Pangkalan data Postgres yang dilampirkan juga tidur selepas 5 minit terbiar dan dicaj untuk masa ia terjaga. Jadi anda mendapat sebahagian besar manfaat “bayar untuk apa yang anda guna”, dengan jenis kelewatan permintaan pertama yang sama selepas tempoh senyap. Lihat had hosting dalam dokumentasi, dan panduan kami tentang web hosting dan mengurangkan kos hosting.
Soalan lazim
Apakah maksud serverless dalam istilah mudah?
Serverless bermaksud anda memberikan kod anda kepada pembekal awan dan ia hanya dijalankan apabila diperlukan — contohnya apabila permintaan masuk — tanpa anda menyediakan atau menjaga mana-mana pelayan. Biasanya anda membayar untuk masa kod anda benar-benar berjalan dan bukan untuk mesin yang sentiasa hidup.
Adakah benar-benar tiada pelayan dalam serverless?
Ada pelayan; anda sahaja tidak menguruskannya. Pembekal menjalankan kod anda pada mesin mereka sendiri, memulakannya apabila permintaan tiba, meningkatkannya apabila beban tinggi dan mematikannya apabila tidak digunakan.
Apakah cold start?
Cold start ialah kelewatan tambahan apabila fungsi serverless berjalan selepas tidak digunakan, kerana pembekal perlu memulakan salinan baharu dahulu. Ia boleh dari hampir tidak dapat dilihat hingga sesaat atau lebih, bergantung pada platform, bahasa dan saiz kod.
Adakah serverless lebih murah daripada pelayan biasa?
Untuk app dengan trafik yang sedikit atau tidak sekata, selalunya ya, kerana anda hampir tidak membayar apa-apa semasa tidak digunakan. Untuk app dengan trafik yang berat dan berterusan, pelayan yang sentiasa hidup mungkin lebih murah. Ia bergantung pada corak penggunaan anda dan harga pembekal.
Apakah contoh platform serverless?
Contoh yang terkenal termasuk AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers, dan ciri fungsi pada platform hosting seperti Vercel dan Netlify.