Serverless Functions ile RDBMS kullanımı

RDBMS client’ları da Connection Pooling tekniği ile connection’i canlı tutarak her sorguda yeni connection açma maliyetinden kaçınırlar.

Fakat açık olan her bağlantı DB’de kaynak tüketir ve RDBMS’lerde maximum connection oldukça sınırlıdır.

Bu durum serverless mimarisinde başa belası oluyor, unutmamalıyız ki serverless func bittiğinde arkada hiçbir şey (açık db connection dahil) kalmamalı.

Max connection 250 olan bir DB’ye en fazla 250 sıcak fonksiyon instance’ı bağlanabilir. Çalışma anı dışında fonksiyonlar kontrol edilemediğinden bu bağlantılar açık kalmaya devam edecekler.

Çözüm : Pooling kullanmayın. DB kütüphaneniz illa da pooling yapıyorsa fonksiyonun bitimine kapatma komutu (tear down) eklemeyi ihmal etmeyin.

Fazladan her sorguda connection kurma maliyeti biraz can sıkıcı ama unutmamalı ki serverless, düşük latency ihtiyaçları için pek ideal değil.

Her seferinde bağlantı maliyetinden dolayı DB ile functions’ı fiziksel olarak yakında, mümkünse aynı zone’da çalıştırmak bu maliyeti oldukça azaltacaktır.