Komputasi database tanpa server menggunakan Microsoft Azure Cosmos DB dan Azure Functions
BERLAKU UNTUK: NoSQL
Komputasi tanpa server adalah tentang kemampuan untuk fokus pada potongan logika individual yang dapat diulang dan tanpa status. Potongan-potongan ini tidak memerlukan manajemen infrastruktur dan mereka mengonsumsi sumber daya hanya dalam hitungan detik, atau milidetik, saat mereka dijalankan. Inti dari gerakan komputasi tanpa server adalah fungsi, yang tersedia dalam ekosistem Azure oleh Azure Functions. Untuk mempelajari lingkungan eksekusi tanpa server lainnya di Azure lihat halaman tanpa server di Azure.
Dengan integrasi asli antara Microsoft Azure Cosmos DB dan Azure Functions, Anda dapat membuat pemicu database, pengikatan input, dan pengikatan output langsung dari akun Microsoft Azure Cosmos DB Anda. Menggunakan Azure Functions dan Microsoft Azure Cosmos DB, Anda dapat membuat dan menyebarkan aplikasi tanpa server berbasis peristiwa dengan akses latensi rendah ke data kaya untuk basis pengguna global.
Gambaran Umum
Microsoft Azure Cosmos DB dan Azure Functions memungkinkan Anda mengintegrasikan database dan aplikasi tanpa server dengan cara berikut:
- Buat pemicu Azure Functions berbasis peristiwa untuk Azure Cosmos DB. Pemicu ini bergantung pada aliran umpan perubahan untuk memantau kontainer Azure Cosmos DB Anda untuk perubahan. Ketika perubahan dilakukan pada kontainer, aliran umpan perubahan dikirim ke pemicu, yang memanggil Fungsi Azure.
- Atau, ikat Azure Function ke kontainer Azure Cosmos DB menggunakan pengikatan input. Input pengikat membaca data dari kontainer ketika fungsi dijalankan.
- Ikat fungsi ke kontainer Azure Cosmos DB menggunakan pengikatan output. Pengikatan output menulis data ke kontainer ketika fungsi selesai.
Catatan
Saat ini, pemicu Azure Functions, pengikatan input, dan pengikatan output untuk Azure Cosmos DB hanya didukung untuk digunakan dengan API untuk NoSQL. Untuk semua API Azure Cosmos DB lainnya, Anda harus mengakses database dari fungsi Anda dengan menggunakan klien statis untuk API Anda.
Diagram berikut ini mengilustrasikan masing-masing dari ketiga integrasi ini:
Pemicu Azure Functions, pengikatan input, dan pengikatan output untuk Microsoft Azure Cosmos DB dapat digunakan dalam kombinasi berikut:
- Pemicu Azure Functions untuk Azure Cosmos DB dapat digunakan dengan pengikatan output ke kontainer Azure Cosmos DB yang berbeda. Setelah fungsi melakukan tindakan pada item di umpan perubahan, Anda dapat menulisnya ke kontainer lain (menulisnya ke kontainer yang sama asalnya akan secara efektif membuat perulangan rekursif). Atau, Anda dapat menggunakan pemicu Azure Functions untuk Azure Cosmos DB untuk secara efektif memigrasikan semua item yang diubah dari satu kontainer ke kontainer yang berbeda, dengan penggunaan pengikatan output.
- Pengikatan input dan pengikatan output untuk Azure Cosmos DB dapat digunakan dalam Fungsi Azure yang sama. Cara ini berfungsi dengan baik dalam kasus ketika Anda ingin menemukan data tertentu dengan pengikatan input, memodifikasinya di Fungsi Azure, lalu menyimpannya ke kontainer yang sama atau kontainer yang berbeda, setelah modifikasi.
- Input yang mengikat ke kontainer Azure Cosmos DB dapat digunakan dalam fungsi yang sama dengan pemicu Azure Functions untuk Azure Cosmos DB, dan dapat digunakan dengan atau tanpa pengikatan output juga. Anda dapat menggunakan kombinasi ini untuk menerapkan informasi pertukaran mata uang terbaru (ditarik dengan input yang mengikat kontainer pertukaran) ke umpan perubahan pesanan baru dalam layanan keranjang belanja Anda. Total keranjang belanja yang diperbarui, dengan konversi mata uang saat ini diterapkan, dapat ditulis ke kontainer ketiga menggunakan pengikatan output.
Kasus penggunaan
Kasus penggunaan berikut ini menunjukkan beberapa cara untuk memanfaatkan data Azure Cosmos DB Anda - dengan menyambungkan data Anda ke Azure Functions yang digerakkan oleh peristiwa.
Kasus penggunaan IoT - Pemicu dan pengikatan output Azure Functions untuk Azure Cosmos DB
Dalam implementasi IoT, Anda dapat memanggil fungsi ketika lampu mesin cek ditampilkan di mobil yang terhubung.
Implementasi: Menggunakan pemicu Azure Functions dan pengikatan output untuk Azure Cosmos DB
- Pemicu Azure Functions untuk Azure Cosmos DB digunakan untuk memicu peristiwa yang terkait dengan peringatan mobil, seperti lampu mesin pemeriksaan yang menyala di mobil yang terhubung.
- Ketika lampu mesin cek datang, data sensor dikirim ke Microsoft Azure Cosmos DB.
- Azure Cosmos DB membuat atau memperbarui dokumen data sensor baru, lalu perubahan tersebut dialirkan ke pemicu Azure Functions untuk Azure Cosmos DB.
- Pemicu dipanggil pada setiap perubahan data ke kumpulan data sensor, karena semua perubahan dialirkan melalui umpan perubahan.
- Kondisi ambang batas digunakan dalam fungsi untuk mengirim data sensor ke departemen garansi.
- Jika suhu juga lebih dari nilai tertentu, pemberitahuan juga dikirim ke pemilik.
- Pengikatan output pada fungsi memperbarui rekaman mobil di kontainer Azure Cosmos DB lain untuk menyimpan informasi tentang peristiwa mesin pemeriksaan.
Gambar berikut menunjukkan kode yang ditulis di portal Microsoft Azure untuk pemicu ini.
Kasus penggunaan keuangan - Pemicu timer dan pengikatan input
Dalam implementasi keuangan, Anda dapat menggunakan fungsi ketika saldo rekening bank berada di bawah jumlah tertentu.
Implementasi: Pemicu timer dengan pengikatan input Microsoft Azure Cosmos DB
- Dengan menggunakan pemicu timer, Anda dapat mengambil informasi saldo rekening bank yang disimpan dalam kontainer Azure Cosmos DB pada interval berwaktu menggunakan pengikatan input.
- Jika saldo di bawah ambang batas saldo rendah yang ditetapkan oleh pengguna, maka tindak lanjuti dengan tindakan dari Fungsi Azure.
- Pengikatan output dapat menjadi integrasi SendGrid yang mengirim email dari akun layanan ke alamat email yang diidentifikasi untuk setiap akun saldo rendah.
Gambar berikut menunjukkan kode di portal Microsoft Azure untuk skenario ini.
Kasus penggunaan game - Pemicu dan pengikatan output Azure Functions untuk Azure Cosmos DB
Dalam game, ketika pengguna baru dibuat, Anda dapat mencari pengguna lain yang mungkin mengenal mereka dengan menggunakan Azure Cosmos DB untuk Gremlin. Kemudian, Anda dapat menulis hasilnya ke Microsoft Azure Cosmos DB atau database SQL untuk pengambilan yang mudah.
Implementasi: Menggunakan pemicu Azure Functions dan pengikatan output untuk Azure Cosmos DB
- Menggunakan database grafik Azure Cosmos DB untuk menyimpan semua pengguna, Anda dapat membuat fungsi baru dengan pemicu Azure Functions untuk Azure Cosmos DB.
- Setiap kali pengguna baru dimasukkan, fungsi dipanggil, dan kemudian hasilnya disimpan menggunakan pengikatan output.
- Fungsi ini mengkueri database grafik untuk mencari semua pengguna yang terkait langsung dengan pengguna baru dan mengembalikan set data tersebut ke fungsi.
- Data ini kemudian disimpan di Azure Cosmos DB, yang kemudian dapat dengan mudah diambil oleh aplikasi front-end apa pun yang menunjukkan kepada pengguna baru teman-teman mereka yang terhubung.
Kasus penggunaan ritel - Beberapa fungsi
Dalam implementasi ritel, ketika pengguna menambahkan item ke keranjang mereka, Anda sekarang memiliki fleksibilitas untuk membuat dan memanggil fungsi untuk komponen pipa bisnis opsional.
Implementasi: Beberapa pemicu Azure Functions untuk Azure Cosmos DB mendengarkan satu kontainer
- Anda dapat membuat beberapa Azure Functions dengan menambahkan pemicu Azure Functions untuk Azure Cosmos DB ke masing-masing - yang semuanya mendengarkan umpan perubahan data keranjang belanja yang sama. Saat beberapa fungsi mendengarkan umpan perubahan yang sama, koleksi sewa baru diperlukan untuk setiap fungsi. Untuk informasi selengkapnya tentang pengumpulan sewa, lihat Memahami pustaka Ubah Prosesor Umpan.
- Setiap kali item baru ditambahkan ke keranjang belanja pengguna, setiap fungsi dipanggil secara independen oleh umpan perubahan dari wadah keranjang belanja.
Satu fungsi dapat menggunakan isi keranjang saat ini untuk mengubah tampilan item lain yang mungkin diminati pengguna.
Fungsi lain dapat memperbarui total persediaan.
Fungsi lain dapat mengirim informasi pelanggan untuk produk tertentu ke departemen pemasaran, yang mengirimi mereka pos elektronik promosi.
Setiap departemen dapat membuat Azure Functions untuk Azure Cosmos DB dengan mendengarkan umpan perubahan, dan memastikan mereka tidak akan menunda peristiwa pemrosesan pesanan penting dalam proses tersebut.
Dalam semua kasus penggunaan ini, karena fungsi ini telah memisahkan aplikasi itu sendiri, Anda tidak perlu memutar instans aplikasi baru sepanjang waktu. Sebaliknya, Azure Functions memutar fungsi individual untuk menyelesaikan proses yang terpisah sesuai kebutuhan.
Alat
Integrasi native antara Azure Cosmos DB dan Azure Functions tersedia di portal Azure dan Visual Studio.
Di portal Azure Functions, Anda dapat membuat pemicu. Untuk instruksi mulai cepat, lihat Membuat pemicu Azure Functions untuk Azure Cosmos DB di portal Azure.
Di portal Azure Cosmos DB, Anda dapat menambahkan pemicu Azure Functions untuk Azure Cosmos DB ke aplikasi Azure Function yang ada di grup sumber daya yang sama.
Di Visual Studio, Anda dapat membuat pemicu menggunakan Alat Azure Functions:
Mengapa memilih integrasi Azure Functions untuk komputasi tanpa server?
Azure Functions menyediakan kemampuan untuk membuat unit kerja yang dapat diskalakan, atau potongan logika ringkas yang dapat dijalankan sesuai permintaan, tanpa menyediakan atau mengelola infrastruktur. Dengan menggunakan Azure Functions, Anda tidak perlu membuat aplikasi lengkap untuk merespons perubahan dalam database Azure Cosmos DB, Anda dapat membuat fungsi kecil yang dapat digunakan kembali untuk tugas tertentu. Selain itu, Anda juga dapat menggunakan data Microsoft Azure Cosmos DB sebagai input atau output ke Fungsi Azure sebagai respons terhadap peristiwa seperti permintaan HTTP atau pemicu berwaktu.
Microsoft Azure Cosmos DB adalah database yang direkomendasikan untuk arsitektur komputasi tanpa server Anda karena alasan berikut:
Akses instan ke semua data Anda: Anda memiliki akses terperinci ke setiap nilai yang disimpan karena Microsoft Azure Cosmos DB secara otomatis mengindeks semua data secara default, dan membuat indeks tersebut tersedia dengan segera. Artinya, Anda dapat terus-menerus meminta, memperbarui, dan menambahkan item baru ke database Anda dan memiliki akses instan melalui Azure Functions.
Tanpa skema. Microsoft Azure Cosmos DB tidak memiliki skema - sehingga secara unik dapat menangani output data apa pun dari Fungsi Azure. Pendekatan "tangani apa pun" ini mempermudah pembuatan berbagai Fungsi yang semua output-nya dikirim ke Azure Cosmos DB.
Throughput yang dapat diskalakan. Throughput dapat diskalakan secara instan di Azure Cosmos DB. Jika Anda memiliki ratusan atau ribuan Fungsi yang mengkueri dan menulis ke kontainer yang sama, Anda dapat meningkatkan RU/s Anda untuk mengatasi beban tersebut. Semua fungsi dapat bekerja secara paralel menggunakan RU/s yang dialokasikan dan data Anda dijamin konsisten.
Replikasi global. Anda dapat mereplikasi data Microsoft Azure Cosmos DB di seluruh dunia untuk mengurangi latensi, menemukan lokasi geografis data Anda yang paling dekat dengan pengguna Anda berada. Seperti semua kueri Microsoft Azure Cosmos DB, data dari pemicu yang digerakkan peristiwa dibaca oleh data dari Microsoft Azure Cosmos DB yang paling dekat dengan pengguna.
Jika Anda ingin mengintegrasikan dengan Azure Functions untuk menyimpan data dan tidak memerlukan pengindeksan mendalam atau jika Anda perlu menyimpan lampiran dan file media, pemicu Azure Blob Storage mungkin merupakan opsi yang lebih baik.
Manfaat Azure Functions:
Digerakkan oleh peristiwa. Azure Functions berbasis peristiwa dan dapat mendengarkan umpan perubahan dari Azure Cosmos DB. Artinya Anda tidak perlu membuat logika mendengarkan, Anda hanya mengawasi perubahan yang Anda dengarkan.
Tidak ada batasan. Fungsi dijalankan secara paralel dan layanan berputar sebanyak yang Anda butuhkan. Anda mengatur parameter.
Bagus untuk tugas cepat. Layanan ini memutar instans fungsi baru setiap kali peristiwa menembak dan menutupnya segera setelah fungsi selesai. Anda hanya membayar untuk waktu yang dijalankan fungsi Anda.
Jika Anda tidak yakin apakah Flow, Logic Apps, Azure Functions, atau WebJobs yang terbaik untuk implementasi Anda, lihat Memilih antara Flow, Logic Apps, Functions, dan WebJobs.
Langkah berikutnya
Sekarang mari kita hubungkan Microsoft Azure Cosmos DB dan Azure Functions secara nyata: