Azure Cosmos DB berjalan tanpa server

Azure's Cosmos DB adalah salah satu fondasi platform, yang memberdayakan banyak layanan utamanya. Didesain dari awal sebagai database terdistribusi, ini menerapkan sekumpulan model konsistensi berbeda yang memungkinkan Anda untuk menukar antara kinerja dan latensi untuk aplikasi Anda. Lalu ada model yang berbeda untuk bekerja dengan data, dari NoSQL dan SQL API yang sudah dikenal, untuk mendukung API Mongo DB, hingga mesin kueri database grafik Gremlin.

Cosmos DB cukup untuk mendukung sebagian besar skenario pengembangan cloud, memberi Anda platform data yang konsisten yang dapat berbagi data dalam skala global. Microsoft sering menggambarkannya sebagai "database berskala planet," deskripsi yang sesuai.

Alternatif tanpa server untuk throughput yang disediakan

Untuk semua manfaat, Cosmos DB memang memiliki beberapa kelemahan; paling tidak biayanya. Meskipun ada opsi gratis yang relatif terbatas, menjalankannya dalam skala besar bisa jadi mahal, dan Anda perlu memperhitungkannya saat membuat aplikasi di sekitarnya. Penganggaran untuk unit permintaan Cosmos DB adalah proses kompleks yang sulit dilakukan pada awalnya, terutama jika Anda memperhitungkan penskalaan, baik secara manual atau otomatis.

Microsoft telah menjalankan pratinjau opsi tanpa server untuk Cosmos DB untuk sementara waktu sekarang, berdasarkan API SQL intinya. Ini adalah alternatif yang menarik untuk opsi yang disediakan secara tradisional. Ini hanya menagih Anda saat menjalankan permintaan dan menangguhkan instans Anda saat tidak ada yang terjadi. Akan ada latensi tambahan dalam operasi database, karena instance Anda perlu berputar saat ditangguhkan. Tentu saja ada biaya untuk penyimpanan, tetapi itu sama dengan database Azure mana pun. Uji coba awal sekarang telah diperluas ke semua Cosmos DB API, dengan ketersediaan umum tidak terlalu lama di masa mendatang.

Menambahkan opsi tanpa server ke Cosmos DB sangat masuk akal untuk banyak jenis beban kerja di mana Anda mendapatkan permintaan dalam jumlah kecil dan dalam kelompok. Untuk beban kerja kecil dengan pola operasi yang tidak teratur, model penetapan harga berbasis konsumsi sangat masuk akal — dan dapat menghemat banyak uang dalam jangka panjang karena tidak ada komitmen untuk produksi yang disediakan.

Biayanya rendah: Anda membayar $ 0,282 per unit permintaan tanpa server, sebanyak satu juta RU dalam satu siklus penagihan. Jika Anda membutuhkan server yang lebih andal, Anda dapat menyiapkan zona ketersediaan, meskipun ini meningkatkan biaya sebesar 1,25x. Itu masih kesepakatan yang masuk akal, dan apa yang hilang dalam prediktabilitas, Anda dapatkan dengan biaya lebih rendah. Biaya penyimpanan tetap sama untuk throughput yang disediakan manual dan otomatis.

Memulai dengan Cosmos DB tanpa server

Melompat cukup mudah. Seperti akun Cosmos DB standar, Anda harus menyediakannya untuk langganan dan menambahkan instans tanpa server Anda ke grup sumber daya. Selanjutnya, pilih API yang ingin Anda gunakan untuk kueri, dan ketika diminta untuk memilih mode kapasitas, pilih throughput tanpa server daripada yang disediakan. Terakhir, tautkan ke suatu wilayah, mengingat Anda hanya dapat menggunakan tanpa server di satu wilayah Azure; tidak ada opsi untuk geo-redundansi. Anda juga tidak akan dapat menggunakannya dengan tingkat gratis.

Setelah instance tanpa server Anda berjalan, Anda dapat menggunakan API-nya untuk memuat data dan membuat kueri. Seperti contoh standar Cosmos DB, Anda dapat membangun fungsi dan pemicu JavaScript yang berjalan di dalam database, serta menggunakan banyak API yang berbeda untuk mengelola kueri.

Cosmos DB tanpa server akan segera keluar dari pratinjau, dan menambahkan dukungan untuk semua API-nya, bahkan untuk Cassandra API-nya baru-baru ini. Karena ini adalah pratinjau publik, Anda dapat mengaturnya dan menjelajahi operasinya langsung dari Azure Portal. Sementara dalam pratinjau, tidak ada dukungan untuk ARM atau infrastruktur lain sebagai alat penyebaran kode, meskipun harus ada setelah layanan tersedia secara umum. Anda tidak dapat mengotomatiskan konfigurasi dan penerapan, jadi Anda tidak akan dapat menggunakannya sebagai bagian dari pipeline CI / CD (integrasi berkelanjutan / pengiriman berkelanjutan) untuk saat ini, karena penerapan harus manual.

Membuat kode dengan Cosmos DB tanpa server

Satu tempat Anda harus mendapatkan banyak nilai dari Cosmos DB tanpa server adalah paralel dengan Azure Functions. Dua lingkungan tanpa server bekerja dengan baik bersama-sama dan ideal untuk aplikasi bervolume rendah yang dikendalikan oleh peristiwa. Cosmos DB tanpa server dapat dengan cepat meningkatkan dari nol menjadi 5.000 unit permintaan per detik, jadi jika Anda menulis kode yang menggunakan Fungsi untuk melacak kondisi kesalahan atau peringatan lainnya, ini adalah opsi untuk mengumpulkan dan menyimpan data dengan cepat.

Microsoft menyarankan untuk menggunakannya sebagai bagian dari lingkungan pengembangan tempat Anda menangkap data tentang permintaan yang dibutuhkan aplikasi skala penuh Anda. Karena penyediaan unit permintaan adalah seni hitam, implementasi tanpa server yang berjalan dengan semua kode dalam database Anda adalah alat pengembangan yang berguna. Anda dapat menyiapkan lingkungan operasional, menjalankan pengujian, menangkap jumlah permintaan yang digunakan, lalu menggunakan data tersebut untuk menyediakan throughput untuk penerapan produksi.

Memahami batasan tanpa server

Ada batasan untuk menggunakan akun Cosmos DB tanpa server. Mungkin yang paling penting adalah Anda tidak mendapatkan akses ke penerapan multiregion, karena akun tanpa server hanya berjalan di satu wilayah. Ini adalah batasan yang masuk akal: Implementasi Multiregion Cosmos DB memerlukan beberapa instans yang berjalan pada saat yang sama untuk replikasi dan konsistensi antarwilayah. Jika instance tanpa server hanya berjalan saat mereka memproses permintaan, tidak ada jaminan region lain akan online untuk menangani replikasi. Akibatnya, ada perubahan pada tujuan tingkat layanan Cosmos DB untuk instans tanpa server, dengan penulisan diharapkan menjadi 30 md atau kurang, dan membaca 10 md atau kurang.

Batasan kunci lainnya adalah maksimal 5.000 unit permintaan per detik. Sekali lagi, itu seharusnya cukup untuk sebagian besar implementasi sederhana atau pengembangan, tetapi itu mengharuskan Anda untuk mengawasi aplikasi Anda dan siap untuk beralih ke instans Cosmos DB yang disediakan jika Anda secara teratur melampaui batas Anda. Pada saat yang sama, setiap penampung tanpa server hanya dapat menyimpan 50 GB data dan indeks. Microsoft menyediakan alat di Azure Portal untuk membantu memantau operasi, serta di Azure Monitor.

Menambahkan opsi tanpa server ke Cosmos DB menjawab banyak pertanyaan tentang biaya. Untuk skenario penggunaan rendah di mana Anda tidak memerlukan cakupan global, ini harus menjadi pilihan pertama Anda. Bergeser untuk menggunakan contoh throughput yang disediakan hanya jika Anda dapat memahami pola permintaan aplikasi Anda dan dapat menganggarkan dana yang sesuai.