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.
Go
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çinaws-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:- Derleme:
GOOS=linux GOARCH=amd64 go build -o main main.go - Sıkıştırma:
zip function.zip main - Yükleme: Oluşan
.zipdosyası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
Handlerdışı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.| Servis | Tipik Kullanım Senaryosu |
| API Gateway | HTTP isteklerini Lambda'ya yönlendirerek REST API oluşturma. |
| S3 Triggers | Bir dosya yüklendiğinde otomatik görüntü işleme. |
| DynamoDB | Düşük gecikmeli veri okuma/yazma işlemleri. |
| CloudWatch | Loglama ve performans takibi. |