Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Petunjuk / Saran
Konten ini adalah kutipan dari eBook, Merancang Aplikasi .NET Cloud Native untuk Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.
Dalam spektrum dari mengelola komputer fisik hingga memanfaatkan kemampuan cloud, kehidupan tanpa server di ujung ekstrem. Satu-satunya tanggung jawab Anda adalah kode Anda, dan Anda hanya membayar saat kode Anda berjalan. Azure Functions menyediakan cara untuk membangun kemampuan tanpa server ke dalam aplikasi cloud-native Anda.
Apa itu serverless?
Tanpa server adalah model layanan komputasi cloud yang relatif baru. Ini tidak berarti bahwa server bersifat opsional - kode Anda masih berjalan di server di suatu tempat. Perbedaannya adalah bahwa tim aplikasi tidak perlu lagi khawatir mengelola infrastruktur server. Sebaliknya, vendor cloud memiliki tanggung jawab ini. Tim pengembangan meningkatkan produktivitasnya dengan memberikan solusi bisnis kepada pelanggan, bukan pipa pipa.
Komputasi tanpa server menggunakan kontainer tanpa status yang dipicu oleh peristiwa untuk menyelenggarakan layanan Anda. Mereka dapat menskalakan keluar dan masuk untuk memenuhi permintaan sesuai kebutuhan. Platform tanpa server seperti Azure Functions memiliki integrasi yang ketat dengan layanan Azure lainnya seperti antrean, peristiwa, dan penyimpanan.
Tantangan apa yang diselesaikan dengan tanpa server?
Platform tanpa server mengatasi banyak masalah yang memakan waktu dan mahal:
- Membeli mesin dan lisensi perangkat lunak
- Menampung, mengamankan, mengonfigurasi, dan memelihara mesin serta kebutuhan jaringan, daya, dan AC mereka
- Patching dan peningkatan sistem operasi dan perangkat lunak
- Mengonfigurasi server web atau layanan mesin untuk menghosting perangkat lunak aplikasi
- Mengonfigurasi perangkat lunak aplikasi dalam platformnya
Banyak perusahaan mengalokasikan anggaran besar untuk mendukung masalah infrastruktur perangkat keras. Pindah ke cloud dapat membantu mengurangi biaya ini; mengalihkan aplikasi ke tanpa server dapat membantu menghilangkannya.
Apa perbedaan antara layanan mikro dan fungsi tanpa server?
Biasanya, layanan mikro merangkum kemampuan bisnis, seperti keranjang belanja untuk situs eCommerce. Ini mengekspos beberapa operasi yang memungkinkan pengguna untuk mengelola pengalaman belanja mereka. Namun, fungsi adalah blok kode kecil dan ringan yang menjalankan operasi tujuan tunggal sebagai respons terhadap suatu peristiwa. Layanan mikro biasanya dibangun untuk menanggapi permintaan, sering kali dari antarmuka. Permintaan dapat berbasis HTTP Rest atau gRPC. Layanan tanpa server merespons peristiwa. Arsitektur berbasis peristiwanya sangat ideal untuk memproses tugas latar belakang yang berjalan pendek.
Skenario apa yang sesuai untuk tanpa server?
Tanpa server mengekspos fungsi jangka pendek individual yang dipanggil sebagai respons terhadap pemicu. Ini membuatnya ideal untuk memproses tugas latar belakang.
Aplikasi mungkin perlu mengirim email sebagai langkah dalam alur kerja. Alih-alih mengirim pemberitahuan sebagai bagian dari permintaan layanan mikro, letakkan detail pesan ke antrean. Fungsi Azure dapat menghapus antrean pesan dan mengirim email secara asinkron. Melakukannya dapat meningkatkan performa dan skalabilitas layanan mikro. Tingkatan beban berbasis antrean dapat diimplementasikan untuk menghindari hambatan yang terkait dengan pengiriman email. Selain itu, layanan mandiri ini dapat digunakan kembali sebagai utilitas di banyak aplikasi yang berbeda.
Pesan asinkron dari antrean dan topik adalah pola umum untuk memicu fungsi tanpa server. Namun, Azure Functions dapat dipicu oleh peristiwa lain, seperti perubahan pada Azure Blob Storage. Layanan yang mendukung unggahan gambar dapat memiliki Azure Function yang bertanggung jawab untuk mengoptimalkan ukuran gambar. Fungsi ini dapat dipicu langsung oleh penyisipan ke Azure Blob Storage, menghindari kompleksitas dalam operasi layanan mikro.
Banyak layanan memiliki proses jangka panjang sebagai bagian dari alur kerja mereka. Seringkali tugas-tugas ini dilakukan sebagai bagian dari interaksi pengguna dengan aplikasi. Tugas-tugas ini dapat memaksa pengguna untuk menunggu, berdampak negatif pada pengalaman mereka. Komputasi tanpa server menyediakan cara yang bagus untuk memindahkan tugas yang lebih lambat di luar perulangan interaksi pengguna. Tugas-tugas ini dapat menskalakan dengan permintaan tanpa mengharuskan seluruh aplikasi untuk menskalakan.
Kapan Anda harus menghindari teknologi serverless?
Penyediaan dan skala solusi tanpa server sesuai permintaan. Ketika instans baru dipanggil, cold start adalah masalah umum. Cold start adalah periode waktu yang diperlukan untuk menyediakan instans ini. Biasanya, penundaan ini mungkin beberapa detik, tetapi bisa lebih lama tergantung pada berbagai faktor. Setelah disediakan, satu instans tetap hidup selama menerima permintaan berkala. Tetapi, jika layanan jarang diakses, Azure dapat menghapusnya dari memori dan memerlukan pemrosesan awal saat dipanggil kembali. Cold start juga diperlukan ketika fungsi di-skala-kan ke instance baru.
Gambar 3-9 menunjukkan pola awal dingin. Perhatikan langkah-langkah tambahan yang diperlukan saat aplikasi dingin.
Gambar 3-9. Awal dingin versus awal yang hangat.
Untuk menghindari dingin dimulai sepenuhnya, Anda mungkin beralih dari paket konsumsi ke paket khusus. Anda juga dapat mengonfigurasi satu atau beberapa instans yang telah dihangatkan sebelumnya dengan peningkatan paket premium. Dalam kasus ini, ketika Anda perlu menambahkan instance lain, instance tersebut sudah dan siap untuk digunakan. Opsi ini dapat membantu mengurangi masalah cold start yang terkait dengan komputasi tanpa server.
Penyedia cloud menagih untuk tanpa server berdasarkan waktu eksekusi komputasi dan memori yang digunakan. Operasi yang berjalan lama atau beban kerja konsumsi memori tinggi tidak selalu menjadi kandidat terbaik untuk tanpa server. Fungsi tanpa server mendukung potongan-potongan kecil pekerjaan yang dapat diselesaikan dengan cepat. Sebagian besar platform tanpa server memerlukan fungsi individual untuk diselesaikan dalam beberapa menit. Azure Functions secara default memiliki durasi waktu habis 5 menit, yang dapat disesuaikan hingga 10 menit. Paket premium Azure Functions juga dapat mengurangi masalah ini, dengan pengaturan waktu habis otomatis 30 menit dan batas yang lebih tinggi tidak terbatas yang dapat dikonfigurasi. Waktu komputasi bukan waktu kalender. Fungsi yang lebih canggih menggunakan kerangka kerja Azure Durable Functions dapat menjeda eksekusi selama beberapa hari. Penagihan didasarkan pada waktu eksekusi aktual - ketika fungsi diaktifkan dan melanjutkan pemrosesan.
Terakhir, memanfaatkan Azure Functions untuk tugas aplikasi menambah kompleksitas. Sangat bijaksana untuk terlebih dahulu merancang aplikasi Anda dengan desain modular yang digabungkan secara longgar. Kemudian, identifikasi apakah ada manfaat dari serverless yang dapat membenarkan kompleksitas tambahan.