AWS Lambda: Go ile Serverless Fonksiyonlar Geliştirme

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
183
Tepkime puanı
2
Puanları
18
AWS Lambda, Go'nun hızlı başlangıç süresi (cold start) ve düşük bellek tüketimiyle birleştiğinde mükemmel bir Serverless (Sunucusuz) deneyimi sunar. Go'nun derlenmiş bir dil olması, Python veya Node.js gibi yorumlanan dillere göre Lambda üzerinde çok daha yüksek performans ve maliyet avantajı sağlar.

1. AWS Lambda ve Go Çalışma Mantığı​

AWS Lambda, Go fonksiyonlarını "Amazon Linux" üzerinde çalışan bir binary olarak yürütür. Go kodu bir paket olarak derlenir ve AWS'ye yüklenir. Bir istek geldiğinde Lambda bu binary'yi çalıştırır ve işi bittiğinde kapatır.

2. Temel Bir Lambda Fonksiyonu Yazımı​

Go'da bir Lambda fonksiyonu yazmak için aws-lambda-go kütüphanesini kullanırız. Her Lambda fonksiyonunun bir Handler (İşleyici) fonksiyonu olmalıdır.
Go
Kod:
package main

import (
	"context"
	"fmt"
	"github.com/aws/aws-lambda-go/lambda"
)

// Giriş verisi için bir struct
type MyEvent struct {
	Name string `json:"name"`
}

// Handler fonksiyonu
func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
	return fmt.Sprintf("Merhaba %s, Lambda dünyasına hoş geldin!", name.Name), nil
}

func main() {
	// Lambda'yı başlat
	lambda.Start(HandleRequest)
}

3. Derleme ve Paketleme (Deployment)​

Go kodunu AWS Lambda'ya yüklemek için Linux mimarisine uygun bir binary üretmeniz gerekir. Eğer Windows veya macOS kullanıyorsanız, cross-compilation yapmalısınız:
  1. Derleme: GOOS=linux GOARCH=amd64 go build -o main main.go
  2. Sıkıştırma: zip function.zip main
  3. Yükleme: Oluşan .zip dosyasını AWS Console veya CLI üzerinden Lambda'ya yüklersiniz.

4. Cold Start ve Performans Optimizasyonu​

Cold Start, fonksiyonun uzun süre kullanılmadıktan sonra ilk kez çağrıldığında ortamın hazırlanması için geçen süredir. Go, bu konuda en avantajlı dillerden biridir.
  • Küçük Binary: Gereksiz paketlerden kaçınarak binary boyutunu küçük tutun.
  • Provisioned Concurrency: Eğer milisaniyeler bile kritikse, AWS'nin ortamı sıcak tutmasını sağlayan bu özelliği kullanabilirsiniz.
  • Global Değişkenler: Veritabanı bağlantısı gibi ağır işlemleri Handler dışında (global kapsamda) tanımlayın; böylece "Warm Start" durumunda bağlantı yeniden kullanılır.

5. AWS SDK v2 ve Entegrasyonlar​

Lambda fonksiyonları genellikle S3, DynamoDB veya SQS gibi diğer AWS servisleriyle konuşur. Bunun için AWS SDK for Go v2 kullanılır.
ServisTipik Kullanım Senaryosu
API GatewayHTTP isteklerini Lambda'ya yönlendirerek REST API oluşturma.
S3 TriggersBir dosya yüklendiğinde otomatik görüntü işleme.
DynamoDBDüşük gecikmeli veri okuma/yazma işlemleri.
CloudWatchLoglama ve performans takibi.
 
Geri
Üst