Go Ekosistemi — En Çok Kullanılan Kütüphane ve Araçların Kapsamlı Rehberi
Go (Golang) ekosisteminde en yaygin benimsenmis kutuphaneler, framework’ler ve araclar icin detayli, kategorize edilmis bir referans. Production ortaminda Go kodunda “insanlarin gercekten ne kullandigi” konusunda genis bir harita isteyen gelistiriciler icin hazirlanmistir.
Icindekiler
- Paket ve Modul Yonetimi
- Web Framework’leri ve HTTP Router’lari
- Veritabani Erisimi, ORM’ler ve Query Builder’lar
- Veritabani Migration Araclari
- Test (Testing)
- Loglama (Logging)
- Konfigurasyon Yonetimi
- CLI Uygulama Framework’leri
- Dependency Injection (Bagimlilik Enjeksiyonu)
- RPC, gRPC ve Protobuf
- Mesajlasma ve Streaming
- Cache (Onbellekleme)
- Validasyon (Dogrulama)
- HTTP Client’lari
- JSON ve Serilestirme
- Concurrency (Es Zamanlilik) Araclari
- Hata Yonetimi (Error Handling)
- Linting ve Statik Analiz
- Build, Task Runner ve Hot Reload
- Gozlemlenebilirlik: Metrikler, Tracing ve APM
- API Dokumantasyonu
- WebSocket ve Gercek Zamanli (Realtime) Iletisim
- Kimlik Dogrulama ve Guvenlik
- NoSQL / Diger Veritabanlari icin ORM’ler
- Yardimci (Utility) ve Standart Kutuphane Genisletmeleri
- Templating (Sablonlama)
- Cloud Native / Kubernetes Ekosistemi
- Deployment ve Container’lastirma
- Populer Tam (Full) Framework’ler / “Her Sey Dahil”
- IDE ve Gelistirici Araclari
- Onerilen “Varsayilan Stack” Ozeti
1. Paket ve Modul Yonetimi
Go’nun modul sistemi, dilin kendi toolchain’ine gomulmustur — npm veya pip gibi harici bir paket yoneticisi yoktur.
| Arac | Amaci |
|---|
go mod | Yerlesik (native) modul yonetimi (go.mod, go.sum) — init, tidy, download, vendor |
go install | Modul yollarindan binary kurulumu yapar |
go work | Coklu modul icin yerel gelistirme workspace modu (Go 1.18+) |
| GOPROXY / proxy.golang.org | Tum public modulleri cache’leyen varsayilan modul proxy’si |
| pkg.go.dev | Resmi dokumantasyon ve modul kesif sitesi |
| Athens | Ozel/kurumsal kullanim icin self-host edilebilen alternatif Go modul proxy’si |
Onemli komutlar: go mod init, go mod tidy, go mod vendor, go mod graph, go mod why.
2. Web Framework’leri ve HTTP Router’lari
Go’nun net/http paketi o kadar guclu ki, birçok production sistemi tam bir framework yerine sadece bir router ile birlikte dogrudan bunu kullanir.
| Kutuphane | Notlar |
|---|
| net/http (stdlib) | Go 1.22’den itibaren metod bazli routing ve path parametrelerini yerlesik olarak destekler (mux.HandleFunc("GET /users/{id}", ...)), basit senaryolarda harici router ihtiyacini azaltir |
Gin (gin-gonic/gin) | En cok yildiz alan Go web framework’u. Cok hizli (httprouter tarzi radix tree kullanir), buyuk middleware ekosistemi, JSON binding/validasyon konusunda kendi yaklasimini dayatir (opinionated) |
Echo (labstack/echo) | Gin’e benzer bir nis — minimalist, yuksek performans, zarif middleware zincirleme, yerlesik TLS/autocert destegi |
Fiber (gofiber/fiber) | Express.js’ten ilham alir, asiri performans icin net/http yerine fasthttp uzerine insa edilmistir (not: fasthttp bazi stdlib net/http middleware’leriyle uyumsuzdur) |
Chi (go-chi/chi) | Hafif, idiomatic, net/http Handler arayuzuyle tam uyumlu router; “sadece router istiyorum, framework degil” diyen takimlar arasinda cok populer |
| gorilla/mux | Tarihsel olarak en populer router; artik topluluk tarafindan surdurulmekte (Gorilla projesi arsivlendi sonra tekrar canlandi) ama hala legacy kodda yaygin |
httprouter (julienschmidt/httprouter) | Son derece hizli, minimalist radix-tree router; bircok baska router’a ilham kaynagi olmustur |
| Buffalo | Rails benzeri “her sey dahil” full-stack framework (bugun daha az yaygin, hala hizli CRUD uygulamalari icin kullaniliyor) |
| Revel | Daha eski full-stack MVC framework, hala bakimi yapiliyor ama nis kaliyor |
Tipik modern secim: Basitlik ve stdlib uyumlulugu icin net/http + chi, ya da daha zengin ozellik seti ve buyuk middleware katalogu icin Gin/Echo.
3. Veritabani Erisimi, ORM’ler ve Query Builder’lar
| Kutuphane | Notlar |
|---|
| database/sql (stdlib) | Tum SQL driver’larinin implemente ettigi standart arayuz; genellikle dogrudan ya da ince bir wrapper araciligiyla kullanilir |
GORM (gorm.io/gorm) | En populer tam (full) ORM — iliskiler (associations), hook’lar, migration’lar, soft delete, eager loading. Bazen “sihirli” davranisi ve N+1 sorgu tuzaklari nedeniyle elestirilir ama benimsenme oraninda baskindir |
sqlx (jmoiron/sqlx) | database/sql‘in ince bir genisletmesi — struct scanning, isimli sorgular, ORM soyutlamasi yok. Daha az boilerplate ile ham SQL kontrolu isteyen takimlar arasinda cok populer |
ent (entgo.io/ent, Facebook/Meta tarafindan) | Graph tabanli, kod uretimi (code generation) odakli ORM. Guclu tip guvenligi, schema-as-code yaklasimi, daha buyuk/yapisal projelerde populer |
sqlc (sqlc-dev/sqlc) | Ham SQL sorgularindan tamamen tip-guvenli (type-safe) Go kodu uretir — runtime reflection yok. ORM’lere alternatif olarak “derleme zamaninda guvenli” secenek olarak giderek daha populer |
pgx (jackc/pgx) | Fiilen (de-facto) standart yuksek performansli PostgreSQL driver’i, artik bakim modunda olan lib/pq yerine siklikla tercih edilir |
| go-sql-driver/mysql | database/sql implemente eden standart MySQL driver’i |
squirrel (Masterminds/squirrel) | Akici (fluent) SQL sorgu olusturucu (ORM degildir), genellikle sqlx ile birlikte kullanilir |
Bun (uptrace/bun) | database/sql uzerine insa edilmis hafif ORM/query builder, iyi migration destegi |
| goqu | Dialect destegi olan SQL sorgu olusturucu |
Yaygin kombinasyonlar: pgx + sqlc (tip-guvenli, hizli, minimal sihir) ya da tek basina GORM (hizli gelistirme, az boilerplate) ya da sqlx + squirrel (kolaylikla birlikte ham kontrol).
4. Veritabani Migration Araclari
| Arac | Notlar |
|---|
golang-migrate (golang-migrate/migrate) | En yaygin kullanilan bagimsiz (standalone) migration araci/kutuphanesi, bircok veritabanini destekler, CLI ya da kutuphane olarak kullanilabilir |
goose (pressly/goose) | Populer alternatif, hem SQL hem Go tabanli migration’lari destekler |
Atlas (ariga/atlas) | Modern schema-as-code migration araci, ent ile iyi entegre olur |
| GORM AutoMigrate | GORM’a yerlesik, basit projeler icin pratik ama karmasik schema evrimi icin sinirli |
5. Test (Testing)
| Kutuphane | Notlar |
|---|
| testing (stdlib) | Go’nun yerlesik test framework’u — go test, tablo tabanli (table-driven) testler, benchmark’lar, t.Run alt testleri |
testify (stretchr/testify) | Acikara en cok kullanilan test yardimci kutuphanesi — assert, require, mock ve suite paketleri |
gomock (uber-go/mock, eski adiyla golang/mock) | Google/Uber tarafindan bakimi yapilan, kod uretimine dayali (mockgen) mocking framework’u |
mockery (vektra/mockery) | Populer alternatif mock uretici, interface’lerden testify-uyumlu mock’lar uretir |
Ginkgo + Gomega (onsi/ginkgo, onsi/gomega) | BDD tarzi test framework’u (“describe/it” sozdizimi), Kubernetes ekosistemi projelerinde populer |
httptest (stdlib net/http/httptest) | Gercek bir ag baglantisi olmadan HTTP handler/server test etmenin standart yolu |
| gock | Harici API cagrilarini test etmek icin HTTP mocking/interception kutuphanesi |
| testcontainers-go | Entegrasyon testleri icin gercek Docker container’lari (Postgres, Redis, Kafka vb.) ayaga kaldirir |
go-cmp (google/go-cmp) | Derin karsilastirma kutuphanesi, test assertion’larinda genellikle reflect.DeepEqual‘a tercih edilir |
gofuzz / native fuzzing (Go 1.18+ testing.F) | Fuzz test, artik toolchain’e yerlesik olarak geliyor |
6. Loglama (Logging)
| Kutuphane | Notlar |
|---|
| log/slog (stdlib, Go 1.21+) | Yeni standart yapilandirilmis (structured) loglama paketi; yerlesik ve birbiriyle uyumlu oldugundan giderek varsayilan secim haline geliyor |
zap (uber-go/zap) | Uber’in son derece yuksek performansli yapilandirilmis logger’i — performans kritik servisler icin en populer secim |
zerolog (rs/zerolog) | Sifir-tahsisli (zero-allocation) JSON logger, zap’e benzer hizda, mikroservisler arasinda cok populer |
logrus (sirupsen/logrus) | Tarihsel olarak en populer yapilandirilmis logger; artik bakim modunda ama mevcut kodun cok buyuk bir bolumunde hala mevcut |
| log (stdlib) | Temel, yapilandirilmamis loglama, production servisleri icin tek basina genellikle yetersiz |
Trend: Yeni projeler giderek performans-hassas servisler icin slog (stdlib) veya zap/zerolog etrafinda standartlasiyor.
7. Konfigurasyon Yonetimi
| Kutuphane | Notlar |
|---|
Viper (spf13/viper) | En populer konfigurasyon kutuphanesi — JSON/YAML/TOML/env degiskenleri/flag’ler/uzak konfigurasyon (etcd/Consul) destekler, genellikle Cobra ile birlikte kullanilir |
envconfig (kelseyhightower/envconfig) | Basit struct-tag tabanli ortam degiskeni ayristirma |
godotenv (joho/godotenv) | .env dosyalarini yukler, Node’un dotenv‘ine benzer |
koanf (knadh/koanf) | Viper’a gore daha hafif, daha modular alternatif, Viper’in daha agir bagimlilik agaci nedeniyle populerligi artiyor |
| cleanenv | Env degiskenleri + YAML/JSON’u birlestiren minimalist konfigurasyon yukleyici |
8. CLI Uygulama Framework’leri
| Kutuphane | Notlar |
|---|
Cobra (spf13/cobra) | Baskin CLI framework’u — kubectl, hugo, docker(-eklentileri), gh (GitHub CLI) tarafindan kullanilir. Alt komutlar, flag’ler, otomatik uretilen yardim/tamamlama saglar |
| urfave/cli | Cobra’ya gore daha basit, daha hafif alternatif, kucuk araclar icin populer |
pflag (spf13/pflag) | POSIX/GNU tarzi flag ayristirma, Cobra tarafindan dahili olarak kullanilir |
kingpin (alecthomas/kingpin) | Akici API’ye sahip alternatif CLI/flag ayristirici, bugun daha az populer ama hala kullaniliyor |
survey (AlecAivazis/survey) | Etkilesimli CLI istemleri (coklu secim, onay, girdi) |
promptui (manifoldco/promptui) | Bir baska populer etkilesimli istem kutuphanesi |
Bubble Tea (charmbracelet/bubbletea) | Elm mimarisine dayanan, modern ve son derece populer TUI (terminal arayuzu) framework’u; “Charm” arac setinin (lipgloss, glamour, bubbles) bir parcasi |
9. Dependency Injection (Bagimlilik Enjeksiyonu)
| Kutuphane | Notlar |
|---|
Wire (google/wire) | Google’in derleme zamani (compile-time) DI kod ureticisi — runtime reflection yok, duz Go kodu uretir |
fx (uber-go/fx) | Uber’in runtime DI framework’u, dig uzerine insa edilmistir, lifecycle hook’lari entegre eder, buyuk servis mimarilerinde populer |
dig (uber-go/dig) | Uber’in daha alt seviyeli, reflection tabanli DI container’i (fx bunun uzerine insa edilmistir) |
| Manuel constructor injection | Idiomatic Go’da cok yaygin — bircok takim, acik constructor kablolamayi tercih ederek bilincli olarak DI framework’lerinden kacinir |
10. RPC, gRPC ve Protobuf
| Kutuphane | Notlar |
|---|
grpc-go (grpc/grpc-go) | Go icin resmi ve baskin gRPC implementasyonu |
protobuf-go (google.golang.org/protobuf) | Resmi Protocol Buffers implementasyonu |
| protoc-gen-go / protoc-gen-go-grpc | Go struct’larini ve gRPC servis stub’larini ureten kod ureticileri (protoc eklentileri) |
Buf (bufbuild/buf) | Ham protoc araclarina modern alternatif — linting, breaking-change tespiti, uzak schema registry; artik protobuf is akislari icin fiilen standart haline gelmeye yakin |
connect-go (connectrpc.com/connect) | Buf’in modern RPC framework’u — gRPC-uyumlu ama ayni zamanda duz HTTP/JSON destekler, ham grpc-go’ya giderek populer bir alternatif |
twirp (twitchtv/twirp) | Twitch’in daha basit RPC framework’u, HTTP/JSON + Protobuf, gRPC’den daha hafif |
grpc-gateway (grpc-ecosystem/grpc-gateway) | gRPC servislerini RESTful JSON API’ler olarak sunmak icin bir reverse-proxy uretir |
11. Mesajlasma ve Streaming
| Kutuphane | Notlar |
|---|
| segmentio/kafka-go | Cgo bagimliligi olmayan, saf Go ile yazilmis populer Kafka client’i |
confluent-kafka-go (confluentinc/confluent-kafka-go) | librdkafka‘yi (C kutuphanesi) cgo araciligiyla sarmalayarak kullanir — daha yuksek performans, ham throughput onemli oldugunda kullanilir |
Sarama (IBM/sarama, eski adiyla Shopify) | Uzun sureden beri kullanilan saf Go Kafka client’i, yaygin kullanimda, artik IBM tarafindan aktif olarak surdurulmekte |
NATS (nats-io/nats.go) | NATS icin resmi client — hafif pub/sub ve JetStream (kalici streaming) |
amqp091-go (rabbitmq/amqp091-go) | Resmi RabbitMQ AMQP 0.9.1 client’i (streadway/amqp‘in halefi) |
| go-redis/redis Streams ile | Hafif bir mesaj kuyrugu alternatifi olarak Redis Streams kullanimi |
watermill (ThreeDotsLabs/watermill) | Kafka, NATS, RabbitMQ vb. uzerinde soyutlama saglayan daha ust seviye event-driven/mesaj isleme kutuphanesi |
NSQ (nsqio/go-nsq) | Gercek zamanli dagitik mesajlasma platformu NSQ icin client |
12. Cache (Onbellekleme)
| Kutuphane | Notlar |
|---|
go-redis (redis/go-redis) | Go icin baskin Redis client’i — Cluster, Sentinel, Streams, pipeline’lari destekler |
redigo (gomodule/redigo) | Daha eski, hala kullanilan alternatif Redis client’i |
ristretto (dgraph-io/ristretto) | Maliyet-tabanli tahliye (cost-based eviction) ile yuksek performansli bellek-ici cache, Dgraph tarafindan dahili olarak kullanilir |
bigcache (allegro/bigcache) | Buyuk veri setleri icin GC yukunu minimize etmek uzere optimize edilmis bellek-ici cache |
groupcache (golang/groupcache) | Baslangicta Google’dan gelen dagitik cache kutuphanesi, bazi sistemlerde memcached yerine kullanilir |
go-cache (patrickmn/go-cache) | Sona erme (expiration) ozellikli basit bellek-ici key-value deposu, kucuk kullanim senaryolari icin iyi |
13. Validasyon (Dogrulama)
| Kutuphane | Notlar |
|---|
| go-playground/validator | En yaygin kullanilan struct validasyon kutuphanesi — tag tabanli (validate:"required,email"), Gin’in binding’i ile dogal olarak entegre olur |
ozzo-validation (go-ozzo/ozzo-validation) | Struct tag’leri olmadan kural zincirleme (rule-chaining) validasyonu, tag-tabanli “sihiri” sevmeyen gelistiriciler tarafindan tercih edilir |
protovalidate (bufbuild/protovalidate) | Dogrudan protobuf semalarina gomulu validasyon kurallari |
14. HTTP Client’lari
| Kutuphane | Notlar |
|---|
| net/http (stdlib) | Tek basina tamamen yetkin bir HTTP client’i; cogu Go gelistiricisi bunu dogrudan kullanir |
resty (go-resty/resty) | En populer ust seviye HTTP client’i — akici API, retry mekanizmasi, middleware, kolay JSON isleme |
req (imroc/req) | resty’ye modern alternatif, HTTP/2 ve HTTP/3 destegi |
go-retryablehttp (hashicorp/go-retryablehttp) | HashiCorp’un net/http etrafindaki retry sarmalayicisi |
fasthttp (valyala/fasthttp) | net/http‘e yuksek performansli alternatif (client & server), stdlib Handler arayuzuyle uyumsuz, Fiber tarafindan kullanilir |
15. JSON ve Serilestirme
| Kutuphane | Notlar |
|---|
| encoding/json (stdlib) | Standart ve en cok kullanilan JSON kutuphanesi; kullanim senaryolarinin buyuk cogunlugu icin yeterli |
jsoniter (json-iterator/go) | encoding/json‘a dogrudan yerlestirilebilen, daha hizli alternatif |
easyjson (mailru/easyjson) | Maksimum performans icin kod uretimine dayali JSON marshal/unmarshal, reflection’dan kacinir |
sonic (bytedance/sonic) | ByteDance’in SIMD hizlandirmali JSON kutuphanesi, cok yuksek performans, Gin/Hertz’de kullanilir |
msgpack (vmihailenco/msgpack) | MessagePack binary serilestirme, servisler arasi ic iletisimde populer |
| protobuf / avro / flatbuffers | Semanin evrimi ve kompaktlik, JSON’un okunabilirliginden daha onemli oldugunda kullanilir |
16. Concurrency (Es Zamanlilik) Araclari
| Kutuphane | Notlar |
|---|
| sync / context (stdlib) | Temel primitifler: WaitGroup, Mutex, Once, iptal/zaman asimi icin context.Context |
errgroup (golang.org/x/sync/errgroup) | Basarisiz olabilen ve koordineli iptal gerektiren goroutine’leri calistirmanin standart yolu |
| golang.org/x/sync/semaphore | Concurrency’yi sinirlamak icin agirlikli (weighted) semaphore |
| golang.org/x/sync/singleflight | Ayni anda gelen ozdes cagrilari tekillestirir (cache stampede onleme) |
ants (panjf2000/ants) | Populer yuksek performansli goroutine pool kutuphanesi |
conc (sourcegraph/conc) | Sourcegraph’in yapilandirilmis concurrency (structured concurrency) yardimci kutuphanesi, daha guvenli goroutine/waitgroup desenleri |
17. Hata Yonetimi (Error Handling)
| Kutuphane | Notlar |
|---|
| errors (stdlib) | errors.Is, errors.As, errors.Join, fmt.Errorf("%w", err) — sarma (wrapping) Go 1.13’ten beri idiomatic ve yerlesik |
| pkg/errors | Tarihsel olarak stack trace ve wrapping icin baskin; artik cogunlukla stdlib wrapping tarafindan yerini almis olsa da eski kodda hala mevcut |
multierr (uber-go/multierr) | Birden fazla hatayi tek bir hatada birlestirir, fx/concurrent kodda yaygin |
eris (rotisserie/eris) | Stack trace ve yapilandirilmis hata agaclari ile hata yonetimi |
18. Linting ve Statik Analiz
| Arac | Notlar |
|---|
| golangci-lint | Baskin meta-linter — 50’den fazla linter’i (govet, staticcheck, errcheck, gosimple, unused vb.) tek, hizli ve yapilandirilabilir bir calistirmada birlestirir. CI pipeline’larinda neredeyse evrensel |
staticcheck (dominikh/staticcheck) | go vet‘in otesinde hatalari, performans sorunlarini ve stil problemlerini yakalayan gelismis statik analiz |
| go vet (stdlib toolchain) | Supheli yapilari (printf format uyusmazliklari, struct tag hatalari vb.) yakalayan yerlesik analiz araci |
| gofmt / goimports | Standart kod formatlayicilari; goimports ayrica import siralamasi/gruplamasini yonetir |
gosec (securego/gosec) | Guvenlik odakli statik analiz araci (SQL injection riskleri, sabit kodlanmis kimlik bilgileri vb.) |
| revive | Kullanimdan kaldirilmis golint‘e yapilandirilabilir, daha hizli alternatif |
19. Build, Task Runner ve Hot Reload
| Arac | Notlar |
|---|
| Makefile | Go repolarinda build/test/lint gorevlerini tanimlamanin hala en yaygin yolu |
Task (go-task/task) | Modern YAML tabanli task runner, Make’e populer alternatif |
Air (cosmtrek/air / air-verse/air) | Yerel gelistirme icin en populer canli yeniden yukleme (live-reload) araci |
| goreleaser | Cross-platform build, paketleme ve GitHub release’lerini otomatiklestirmenin standart araci |
Mage (magefile/mage) | Build script’lerini Makefile sozdizimi yerine Go’nun kendisiyle yazmak icin |
Bazel (rules_go ile) | Hermetic, cache’lenebilir build gerektiren buyuk monorepo’larda kullanilir (orn. buyuk teknoloji sirketlerinde) |
20. Gozlemlenebilirlik: Metrikler, Tracing ve APM
| Kutuphane | Notlar |
|---|
OpenTelemetry Go (open-telemetry/opentelemetry-go) | Trace, metrik ve log enstrumantasyonu icin modern standart — vendor-bagimsiz |
Prometheus client_golang (prometheus/client_golang) | Go servislerinden Prometheus metrikleri sunmak icin standart kutuphane |
| expvar (stdlib) | Debug/metrik icin temel yerlesik degisken sunumu, bugun tek basina nadiren yeterli |
pprof (stdlib net/http/pprof) | Yerlesik CPU/bellek/goroutine profilleme, performans debug icin gerekli |
| Jaeger client | Buyuk olcude OpenTelemetry exporter’lari tarafindan yerini almistir, ama hala eski kurulumlarda referans olarak gorulur |
Sentry-go (getsentry/sentry-go) | Populer hata takibi / crash raporlama SDK’si |
21. API Dokumantasyonu
| Kutuphane | Notlar |
|---|
| swaggo/swag | Go kodu yorumlarindan/anotasyonlarindan Swagger/OpenAPI dokumantasyonu uretir — Gin/Echo uygulamalari icin en yaygin yaklasim |
go-swagger (go-swagger/go-swagger) | Daha kapsamli OpenAPI araclari — hem server/client kodu hem de dokumantasyon uretir |
oapi-codegen (deepmap/oapi-codegen / oapi-codegen/oapi-codegen) | Bir OpenAPI spesifikasyonundan Go server/client kodu uretir (spec-first, swag’in tersi yonu) |
| redoc / swagger-ui | Uretilen OpenAPI spec’lerini render etmek icin standart frontend arayuzleri |
22. WebSocket ve Gercek Zamanli (Realtime) Iletisim
| Kutuphane | Notlar |
|---|
| gorilla/websocket | Uzun sureden beri standart olan WebSocket implementasyonu, hala son derece yaygin kullaniliyor |
nhooyr/websocket (simdi coder/websocket) | Daha temiz bir API ve daha iyi net/http entegrasyonuna sahip modern, minimal, context-farkindaligi olan alternatif |
melody (olahol/melody) | gorilla/websocket uzerine insa edilmis ust seviye WebSocket framework’u, baglanti/oturum yonetimini halleder |
| Centrifugo (server, Go SDK’lariyla) | Genellikle Go backend’leriyle birlikte kullanilan populer bagimsiz gercek zamanli mesajlasma sunucusu |
23. Kimlik Dogrulama ve Guvenlik
| Kutuphane | Notlar |
|---|
golang-jwt/jwt (dgrijalva/jwt-go‘nun halefi) | Go icin standart JWT kutuphanesi |
| golang.org/x/crypto | Cekirdek stdlib’de bulunmayan genisletilmis kriptografi primitifleri (bcrypt, argon2, ssh, nacl) |
oauth2 (golang.org/x/oauth2) | Standart OAuth2 client implementasyonu, saglayiciya ozel paketleri icerir |
Casbin (casbin/casbin) | RBAC/ABAC erisim kontrol modellerini destekleyen populer yetkilendirme kutuphanesi |
go-oidc (coreos/go-oidc) | OpenID Connect client kutuphanesi |
24. NoSQL / Diger Veritabanlari icin ORM’ler
| Kutuphane | Notlar |
|---|
mongo-go-driver (mongodb/mongo-go-driver) | Resmi ve standart MongoDB driver’i |
go-elasticsearch (elastic/go-elasticsearch) | Resmi Elasticsearch client’i |
gocql (gocql/gocql) | Populer Cassandra client’i |
| dynamodb (aws-sdk-go-v2) | AWS SDK’sinin DynamoDB client’i, DynamoDB erisimi icin standart |
badger (dgraph-io/badger) | Saf Go ile yazilmis, gomulu (embedded), yuksek performansli key-value deposu (LSM-tree tabanli) |
bbolt (etcd-io/bbolt) | Gomulu key-value deposu (orijinal bolt‘un fork’u), etcd ve bircok CLI araci tarafindan yerel depolama icin kullanilir |
25. Yardimci (Utility) ve Standart Kutuphane Genisletmeleri
| Kutuphane | Notlar |
|---|
| golang.org/x/exp | stdlib’e deneysel genisletmeler (slices, maps yardimcilari stdlib’e tasinmadan once) |
| samber/lo | Go generics’ten yararlanan populer Lodash tarzi generic yardimci kutuphane (map/filter/reduce yardimcilari) |
| google/uuid | Standart UUID uretme/ayristirma kutuphanesi |
| oklog/ulid | ULID (siralanabilir benzersiz tanimlayici) implementasyonu, UUID’ye populer alternatif |
| golang.org/x/text | Metin isleme, Unicode normalizasyonu, uluslararasilastirma |
| golang.org/x/time/rate | Standart token-bucket rate limiter |
| shopspring/decimal | Rastgele hassasiyetli (arbitrary-precision) decimal kutuphanesi, finansal hesaplamalar icin gereklidir (float yuvarlama hatalarindan kacinir) |
| spf13/afero | Dosya sistemi soyutlama katmani, dosya sistemine bagimli kodu test ederken faydalidir |
| caarlos0/env | Alternatif basit env-degiskeni’nden struct’a ayristirici |
26. Templating (Sablonlama)
| Kutuphane | Notlar |
|---|
| html/template / text/template (stdlib) | HTML ve genel metin icin standart, context-farkindaligi olan (otomatik kacis/auto-escaping) sablonlama |
templ (a-h/templ) | Go icin modern, giderek populerlesen, derleme zamaninda kontrol edilen HTML sablonlama dili, component tarzi arayuzler icin html/template’e alternatif |
| pongo2 | Django/Jinja2 tarzi sablonlama motoru |
27. Cloud Native / Kubernetes Ekosistemi
| Kutuphane | Notlar |
|---|
client-go (kubernetes/client-go) | Resmi Kubernetes API client’i, bir cluster ile etkilesime giren her Go araci icin temeldir |
controller-runtime (kubernetes-sigs/controller-runtime) | Kubernetes controller/operator’leri gelistirmek icin standart kutuphane |
| Operator SDK / Kubebuilder | controller-runtime uzerine insa edilmis, operator yazmak icin scaffolding framework’leri |
| Helm SDK | Helm chart’lariyla programatik olarak calismak icin Go SDK’si |
containerd / Docker SDK’lari (docker/docker, containerd/containerd) | Container runtime’lariyla etkilesim icin client kutuphaneleri |
28. Deployment ve Container’lastirma
| Arac | Notlar |
|---|
| Docker cok-asamali (multi-stage) build’ler | Minimal Go container imajlari uretmenin standart yolu (build asamasi + scratch/distroless runtime asamasi) |
ko (ko-build/ko) | Dockerfile yazmadan Go container imajlari olusturur ve push eder, Kubernetes-native is akislarinda populer |
| distroless imajlar (Google) | Derlenmis Go binary’leri icin yaygin olarak kullanilan minimal base imajlar |
| goreleaser | (build araclarinda da listelenmistir) release artifact’lari + container imaj yayinlamayi otomatiklestirir |
29. Populer Tam (Full) Framework’ler / “Her Sey Dahil”
| Framework | Notlar |
|---|
Hertz (cloudwego/hertz) | ByteDance’in yuksek performansli HTTP framework’u, hizla buyuyor, ByteDance icinde yogun ve giderek disarida da kullaniliyor |
Kratos (go-kratos/kratos) | Bilibili’nin mikroservis framework’u — gRPC, HTTP, konfigurasyon ve servis kesfini tek, kendi yaklasimini dayatan (opinionated) bir stack’te birlestirir |
Go-zero (zeromicro/go-zero) | Kod uretimiyle (goctl) tam mikroservis framework’u, Cin Go topluluğunda populer ve global olarak buyuyor |
| Beego | Go icin en eski tam MVC framework’lerinden biri, artik daha az baskin ama hala bakimi yapiliyor |
| NATS/micro/go-micro | Takilabilir transport/registry’lerle mikroservis olusturmak icin framework |
30. IDE ve Gelistirici Araclari
| Arac | Notlar |
|---|
| gopls | Resmi Go language server’i, VS Code, Neovim vb. icinde otomatik tamamlama/refactoring/tani (diagnostics) saglar |
Delve (go-delve/delve) | Standart Go debugger’i, cogu IDE’ye entegre edilmistir |
| VS Code + Go eklentisi | Go gelistirme icin en yaygin kullanilan editor kurulumu |
| GoLand (JetBrains) | Go icin en populer ozel (commercial) IDE |
| go generate | Yerlesik kod uretim yonergesi mekanizmasi, yukaridaki bircok arac (mockery, sqlc, wire, ent, protoc) tarafindan kullanilir |
31. Onerilen “Varsayilan Stack” Ozeti
Genis kabul gormus, temsili bir modern Go backend stack’i kabaca soyle gorunur:
- Routing:
net/http (1.22+) veya chi, ya da daha fazla ozellik icin Gin/Echo - Veritabani:
pgx + sqlc (ya da gelistirme hizi icin GORM) - Migration:
golang-migrate veya goose - Konfigurasyon:
Viper veya koanf - Loglama:
slog veya zap - Validasyon:
go-playground/validator - Test: stdlib
testing + testify + mockery/gomock - CLI:
Cobra - DI: manuel constructor’lar, ya da buyuk sistemler icin
Wire/fx - gRPC:
grpc-go + Buf (ya da connect-go) - Gozlemlenebilirlik:
OpenTelemetry + Prometheus client_golang - Linting:
golangci-lint - Build/gelistirme dongusu: yerel gelistirme icin
Makefile/Task + Air, release’ler icin goreleaser - Dokumantasyon:
swaggo/swag veya oapi-codegen
Bu belge, 2026 yilinin ilk yarisi itibariyla Go toplulugunda genis kabul gormus benimsenme (adoption) egilimlerini yansitmaktadir. Ekosistemin populerligi zaman icinde degisebilir — herhangi bir kategorinin en guncel durumu icin daima guncel GitHub yildiz sayilarini, son commit aktivitesini ve resmi Go blog duyurularini kontrol edin.