Bagaimana cara mengatasi masalah penskalaan dengan tanpa server dan MongoDB?
Saya terbiasa dengan tanpa server dan MongoDB dan ingin tahu apakah ada cara yang dapat diskalakan untuk menghubungkan kedua dunia. Sejauh yang saya tahu, Anda tidak dapat berinteraksi dengan MongoDB dengan cara yang tenang. Sebaliknya, membuka koneksi yang seharusnya digunakan kembali.
Katakanlah saya menggunakan AWS Lambda sebagai bagian dari API tanpa server. Saat lambda dingin, Anda harus membuka koneksi baru ke MongoDB dan saat lambda masih panas, koneksi tetap terbuka. Solusi ini baik-baik saja, tetapi ketika Anda mengalami lonjakan lalu lintas di API, Anda akan mencapai batas koneksi yang diberlakukan oleh MongoDB.
Adakah cara untuk mengatasi batas koneksi ini di dunia tanpa kewarganegaraan seperti lambda?
Jawaban
Fungsi Lambda adalah stateless dan asynchronous, dan dengan menggunakan kumpulan koneksi database, Anda akan menambahkan status padanya, dan mengalahkan tujuannya.
Jika Anda menginginkan penggabungan koneksi, menjalankan server Anda melalui EC2 adalah opsi yang paling sesuai di AWS.
Namun, jika Anda masih menginginkan penggabungan koneksi dengan lambda, Anda dapat membuat kumpulan secara normal menggunakan MongoClient.connect(uri, { poolSize: 10 })
dan menjaga lambda Anda tetap hangat menggunakan acara cloud-watch dengan membuat pemicu tiruan.
Anda pasti akan melihat beberapa peningkatan kinerja.
Ide untuk dipikirkan: Anda dapat menggunakan Kinesis untuk memicu Lambda Anda, Ini akan membatasi jumlah eksekusi bersamaan ke jumlah pecahan, misalnya, 8 pecahan untuk 8 secara bersamaan.
Dengan cara ini, Anda dapat menjaga koneksi tetap terbuka, dan mendapatkan batasan koneksi terbuka Anda untuk menghindari masalah penskalaan.
Jenis hal ini (Untuk pemanggilan tunggal, apakah koneksi baru atau digunakan kembali) Anda dapat memantau dengan beberapa alat pemantauan yang akan membantu Anda mempertahankan status penskalaan Anda dari waktu ke waktu, ini akan membantu mengelola usia iterator MongoDB dan Kinesis. Seperti:
- AWS X-Ray
- Metrik AWS Cloudwatch
- Datadog
- Lumigo
Sebagai pengungkapan, saya bekerja untuk perusahaan bernama Lumigo, Kami memiliki alat pemantauan terdistribusi yang dapat membantu Anda melacak masalah skala produksi Anda