Bagian ini menjelaskan informasi latar belakang, prinsip, dan batasan runtime Custom Container di Function Compute. Juga dijelaskan persyaratan untuk konfigurasi server HTTP.
Latar Belakang
Di era cloud-native, container images banyak digunakan dalam pengembangan dan penerapan perangkat lunak. Untuk mengoptimalkan pengalaman pengembang serta meningkatkan efisiensi pengembangan dan pengiriman, Function Compute menyediakan runtime Custom Container yang memungkinkan pengembang menggunakan container images sebagai hasil akhir fungsi. Berikut adalah manfaat runtime Custom Container:
Migrasi dapat dilakukan dengan biaya rendah karena tidak memerlukan modifikasi kode atau rekompilasi file biner. Objek bersama (*.so) digunakan untuk memastikan konsistensi antara lingkungan pengembangan dan produksi.
Pemisahan antara kode dan dependensi dihindari, sehingga menyederhanakan distribusi dan penerapan.
Container images secara asli disimpan dalam hierarki cache, meningkatkan efisiensi pengunggahan dan penarikan kode.
Pustaka pihak ketiga yang standar dan dapat direplikasi dapat digunakan untuk berbagi, membangun, dan menyimpan sumber daya, serta memfasilitasi pengunggahan kode dan manajemen versi. Ini menciptakan ekosistem open source yang komprehensif untuk integrasi dan penerapan berkelanjutan (CI/CD).
Permintaan HTTP dapat digunakan untuk berinteraksi dengan Function Compute.
Images yang beroperasi tanpa interaksi pengguna dapat dieksekusi.
Prinsip
Sebelum Function Compute menginisialisasi instance, ia mengasumsikan peran layanan yang dikonfigurasikan untuk fungsi, mendapatkan nama pengguna dan kata sandi sementara, dan menarik image. Setelah image ditarik, Function Compute memulai image menggunakan perintah startup dan parameter args yang ditentukan.
Server HTTP harus disertakan dalam container image. Function Compute mendengarkan server HTTP Anda menggunakan CAPort yang dikonfigurasikan. Server HTTP mengambil alih semua permintaan ke Function Compute, termasuk pemanggilan fungsi event dan fungsi HTTP. Sebelum mengembangkan logika interaksi suatu fungsi, Anda harus menentukan apakah fungsi tersebut adalah fungsi event atau fungsi HTTP. Gambar-gambar berikut menunjukkan cara kerja fungsi event dan fungsi HTTP.
Fungsi event

Fungsi HTTP

Batasan
Ukuran image
Container Registry Personal Edition dan edisi Basic, Standard, dan Advanced dari Container Registry Enterprise Edition mendukung hingga 10 GB image yang tidak dikompresi.
Akselerasi startup image
Setelah fungsi dibuat atau diperbarui, Anda harus menunggu hingga image yang dipercepat tersedia sebelum memanggil fungsi di Function Compute console.
Repositori image
Anda dapat menarik image dari instance Container Registry Enterprise Edition dan Personal Edition. Untuk informasi lebih lanjut, lihat Apa itu Container Registry?
Akses image
Anda dapat membaca image dari repositori image publik lintas akun dan wilayah hanya di instance Container Registry Personal Edition. Di instance Container Registry Enterprise Edition, Anda hanya dapat membaca image dari repositori image pribadi di wilayah yang sama dan dalam akun yang sama.
Hak baca/tulis pada file container
Secara default, UID run-as-user dari container adalah ID pengguna root, yang diatur ke 0. Jika Anda menentukan pengguna di Dockerfile, container image dijalankan oleh pengguna yang ditentukan tersebut.
Ukuran data lapisan yang dapat ditulis di container
Kecuali untuk lapisan image yang hanya-baca, ukuran data yang dihasilkan oleh container dibatasi hingga 512 MB atau 10 GB, tergantung pada ukuran disk yang dikonfigurasikan untuk fungsi dalam pengaturan lanjutan. Untuk informasi lebih lanjut, lihat Buat Fungsi.
Data yang disimpan di lapisan yang dapat ditulis dari container tidak bertahan. Saat container dihapus, data tersebut juga dihapus. Jika Anda menginginkan penyimpanan permanen, Anda dapat memasang sistem file File Storage NAS (NAS) atau Object Storage Service (OSS) ke Function Compute. Untuk informasi lebih lanjut, lihat Konfigurasikan Sistem File NAS dan Konfigurasikan Sistem File OSS. Anda juga dapat menggunakan layanan penyimpanan bersama lainnya, seperti Tablestore.
Arsitektur image
Function Compute hanya mendukung arsitektur image AMD64. Oleh karena itu, jika Anda menggunakan perangkat yang menjalankan arsitektur ARM, seperti komputer Mac yang dilengkapi dengan chip Apple, Anda harus menentukan platform kompilasi image sebagai linux/amd64 saat membangun image. Berikut adalah contoh perintah: docker build --platform linux/amd64 -t $IMAGE_NAME .
Setelah operasi pembuatan selesai, Anda dapat menjalankan perintah docker inspect untuk memeriksa arsitektur. Jika output berisi "Architecture" : "amd64", image yang Anda bangun memiliki arsitektur yang benar.
Persyaratan konfigurasi untuk server HTTP
Layanan yang dimulai dalam runtime Custom Container harus mendengarkan
0.0.0.0:CAPortatau*:CAPort. Jika Anda menggunakan port127.0.0.1:CAPort, kesalahan timeout akan terjadi. Berikut adalah contoh pesan kesalahan:{ "ErrorCode":"FunctionNotStarted", "ErrorMessage":"TheCA'shttpservercannotbestarted:ContainerStartDuration:25000000000.PingCAfaileddueto:dialtcp21.0.XX.XX:9000:getsockopt:connectionrefusedLogs:2019-11-29T09:53:30.859837462ZListeningonport9000" }Port mendengarkan default (CAPort) dari runtime Custom Container adalah port 9000. Jika runtime Custom Container menggunakan port mendengarkan default ini, port mendengarkan server HTTP dalam container image juga harus port 9000. Jika runtime Custom Container menggunakan port 8080 sebagai port mendengarkan, maka port mendengarkan server HTTP harus port 8080.
Anda harus mengaktifkan fitur keep-alive untuk koneksi dan mengatur periode timeout permintaan di sisi server menjadi 15 menit atau lebih lama. Potongan kode berikut memberikan contoh:
// Dalam contoh ini, framework Express untuk Node.js digunakan. var server = app.listen(PORT, HOST); server.timeout = 0; // tidak pernah timeout server.keepAliveTimeout = 0; // keepalive, tidak pernah timeoutServer HTTP harus menyelesaikan startup dalam waktu 120 detik.
Header permintaan umum
Header permintaan umum dalam runtime Custom Container sama dengan yang ada di runtime kustom. Untuk informasi lebih lanjut, lihat Header Permintaan Umum di Function Compute.
Format log
Log yang dicetak ke output standar (stdout) dalam runtime Custom Container secara otomatis dikumpulkan ke Logstore yang ditentukan di Simple Log Service. Untuk informasi lebih lanjut, lihat Konfigurasikan Logging.
Runtime Custom Container menggunakan format log yang sama dengan runtime kustom. Untuk informasi lebih lanjut, lihat Format Log Fungsi.
Praktik terbaik untuk mitigasi cold start
Kompleksitas inheren dan ukuran yang lebih besar dari container images, karena mencakup lingkungan runtime yang diperlukan, biasanya mengarah pada waktu unduh dan unpack yang lebih lama—sering disebut sebagai cold start—dibandingkan dengan paket kode yang lebih sederhana. Untuk mengurangi cold start, kami merekomendasikan agar Anda merujuk pada praktik terbaik berikut:
Gunakan alamat image Virtual Private Cloud (VPC) di wilayah yang sama dengan Function Compute untuk mengurangi latensi penarikan image dan meningkatkan stabilitas.
Minimalkan ukuran image Anda. Anda dapat membangun image kustom berdasarkan image yang diminimalkan seperti Alpine atau Ubuntu. Pertahankan hanya dependensi yang diperlukan dalam image, hapus dokumen, data, dan file yang tidak perlu.
Gunakan container images bersama dengan instans yang disediakan. Untuk informasi lebih lanjut, lihat Konfigurasikan Instans yang Disediakan dan Aturan Penskalaan Otomatis.
Dalam kasus di mana fungsi Anda aman-thread dan Anda memiliki sumber daya yang cukup, Anda dapat mengonfigurasi konkurensi instans untuk memungkinkan instans memproses beberapa permintaan sekaligus. Pendekatan ini mengurangi cold start dan menghemat biaya. Untuk informasi lebih lanjut, lihat Konfigurasikan Konkurensi Instans.
Setelah Anda membuat atau memperbarui fungsi, fitur akselerasi startup image, yang diaktifkan secara default di Function Compute, secara otomatis mengurangi durasi cold start. Untuk informasi lebih lanjut, lihat Percepat Startup Image untuk Container Registry Personal Edition dan Percepat Startup Image untuk Container Registry Enterprise Edition.
Penagihan
Item yang dapat ditagih untuk fungsi Custom Container sama dengan item untuk fungsi yang dijalankan di jenis runtime lainnya. Untuk informasi lebih lanjut, lihat Ikhtisar Penagihan.
Durasi penarikan image, yaitu dari waktu penarikan dimulai hingga selesai, digunakan sebagai dasar untuk menghitung biaya penggunaan sumber daya image. Misalnya, jika diperlukan 10 detik untuk menarik image untuk instance yang memiliki memori 1 GB, total konsumsi sumber daya adalah 10 GB-detik.
Container images disimpan dalam cache selama periode tertentu. Saat image yang di-cache digunakan, tidak ada biaya penarikan image.