Grafana K6 ile Go Fiber Uygulamalarında Yük Testi Nasıl Yapılır?

Grafana K6 ile Go Fiber Uygulamalarında Yük Testi Nasıl Yapılır?”

Merhaba, son dönemde Go dili ile aktif bir şekilde uygulama geliştirmeye başladım. Bu yazıda, Fiber framework’ü kullanarak basit bir Go uygulaması geliştireceğiz ve ardından Grafana K6 ile detaylı bir yük testi (load test) senaryosu oluşturup sonuçları analiz edeceğiz.

İlk olarak, basit bir Go Fiber uygulaması oluşturacağız ve GORM kullanarak PostgreSQL veritabanına bağlanacağız. Bu uygulama kapsamında temel CRUD işlemleri üzerinde durarak testler gerçekleştireceğiz.

Go Modülü Başlatma: Uygulamanızı başlatmak için önce bir Go modülü oluşturmanız gerekecek:

go mod init project-name

go get github.com/gofiber/fiber/v2

Main.go Dosyasını Oluşturma: Fiber uygulamasını ayağa kaldırmak için “main.go” dosyamızı oluşturup şu şekilde doldurabiliriz:

“go run main.go” komutu ile basit Fiber uygulamamızı başlatabiliriz. Ancak süreç burada bitmiyor. Uygulamamıza bir PostgreSQL veritabanı ekleyerek daha anlamlı hale getireceğiz. Bu adımda, GORM ORM’yi kullanarak Go Fiber uygulamamızı PostgreSQL veritabanına bağlayacağız.

PostgreSQL Bağlantısı:

PostgreSQL veritabanı olarak AWS Free Tier’den yararlanarak bir veritabanı oluşturacağız ve Go Fiber uygulamamızı bu AWS veritabanına bağlayacağız. AWS üzerinden PostgreSQL veritabanını oluşturduktan sonra, uygulamanızı AWS PostgreSQL veritabanına bağlayarak CRUD işlemlerini gerçekleştireceğiz.

Go tarafında, AWS PostgreSQL veritabanına başarılı bir şekilde bağlandık ve bağlantının doğrulandığı log çıktısını aldık. Ayrıca, GORM ile otomatik migration işlemlerini de sorunsuz bir şekilde gerçekleştirdik. Bu sayede, uygulamamız için gerekli olan tablolar, veritabanında otomatik olarak oluşturuldu.

“database.go” içerisin deki gerekli database bağlantısını sağlayan kodumuz ise bu şekilde

Gerekli ayarlarımızı tamamladığımıza göre, şimdi Go Fiber uygulamamıza Grafana K6 ile bir yük testi (load test) gerçekleştirebiliriz.

K6 Yük Testi Senaryosu:

Bir yük testi senaryosu oluşturmak için k6-test.js isimli bir dosya oluşturacağız. Bu dosya, K6 test senaryosunun yapılandırmasını içerecek. Aşağıda, bu testin içeriği yer alıyor. Test senaryomuzda, 30 saniye boyunca 50 sanal kullanıcıyı üç farklı Product endpoint'ine yönlendireceğiz.

Sonuçlarımız ise bu şekilde

Dilerseniz bu testlerde biraz daha gerekli senaryoları uzatalım ayrıca bu testlerin local bir sunucuda çalıştırıldığını unutmayalım :)

Sonuçlar:

Yaptığımız yük testi sonuçlarına göre, uygulamamızın isteklerinin %90'ında başarılı sonuçlar elde ettiğimizi görebiliyoruz. Bu, uygulamanın belirli bir yük altında stabil çalıştığını gösteriyor.

Veritabanı Detayları:

Testlerimizi gerçekleştirdiğimiz AWS PostgreSQL veritabanı, 2 CPU ve 1 GB RAM’e sahip bir sistemdi. Bu tür bir yapı, küçük ölçekli projeler ve deneme amaçlı kullanım için yeterli performansı sağlayabilir. Ancak daha büyük projeler ve daha yoğun trafik altında daha güçlü bir yapı gerekebilir.

Özet:

Yük testleri, uygulamamızın dayanıklılığını ve performansını ölçmek için kritik öneme sahiptir. Fiber ve GORM kullanarak PostgreSQL veritabanına bağlanan Go uygulamamızın bu testlerden geçtiğini ve büyük ölçüde başarılı sonuçlar verdiğini söyleyebiliriz.

Ayrıca repoyu incelemek isterseniz; https://github.com/TarikSogukpinar/go-k6

Herkese iyi çalışmalar! Bir sonraki yazılarda görüşmek üzere!