go-gavel
eAuction’ın kurumsal mimariye evrimi
Açık artırma uygulamasını Go ile yeniden geliştirdiğim kişisel çalışma. Şu aşamada kullanıcı kaydı ve oturum bileşenleri üzerinde çalışıyorum.
Geliştirmeye devam ediyorum- Kimler için?
- Servis tabanlı uygulama mimarisini inceleyen geliştiriciler
- Katkım
- Kişisel proje · Yazılım geliştirme
- Durum
- Geliştirmeye devam ediyorum
Çözülmesi gereken ihtiyaç
eAuction deneyimini Go servisleri ve açık sözleşmelerle yeniden ele almak; kimlik doğrulama ve veri erişimi sınırlarını ayrı sorumluluklar olarak kurmak istiyorum.
Ortaya çıkan işlevler
Kullanıcı kaydı, parola hash ve token bileşenleri üzerinde çalışıldı. Proje tamamlanmış bir platform değil; vakit buldukça geliştirdiğim bir mimari çalışması.
Ben ne yaptım?
Go monorepo içinde Protobuf sözleşmeleri, gRPC kullanıcı kaydı, PostgreSQL deposu ve JWT/Redis token bileşenlerini geliştirdim.
Geliştirme ayrıntılarını incele
Teknik yaklaşımla ilgilenenler için: çalışma akışı, kullandığım teknolojiler ve uygulama kararları.
Süreç nasıl işliyor?
Geliştirmeye devam ettiğim projenin mevcut kullanıcı kayıt yolu aşağıda. Token bileşenleri ayrı gösteriliyor; uçtan uca açık artırma hedefi henüz bu akışın tamamlanmış bir parçası değil.
Ana akış
Protobuf isteğini oluştur
Kullanıcı kayıt verisi servisler arası Protobuf sözleşmesine göre hazırlanır.
gRPC servisinde karşıla
Auth servisi isteği adapter üzerinden kayıt use case’ine aktarır.
Kayıt verisini doğrula
Ad, soyad, e-posta ve parola alanları uygulama kurallarıyla kontrol edilir.
Parolayı hashle
bcrypt ile parola hash’i oluşturulur; açık parola saklanmaz.
Kullanıcıyı repository ile kaydet
pgx tabanlı repository PostgreSQL kalıcılığını sağlar.
Kayıt sonucunu döndür
gRPC yanıtı durum, mesaj ve varsa alan doğrulama hatalarını taşır.
Alternatif ve destek süreçleri
Doğrulama başarısızsa
- Alan hatalarını oluştur
Geçersiz alanlar use case doğrulama sonucuna eklenir.
- Kaydı durdur
Kullanıcı kaydedilmeden hata bilgisi yanıt yoluna aktarılır.
Ayrı kimlik doğrulama bileşenleri
- Access / refresh token
JWT access ve refresh token bileşenleri kimlik doğrulama sorumluluğunu kayıt use case’inden ayrı olarak taşır.
- Token geçersizleştirme
Redis blacklist ve TTL token geçersizleştirme bileşenlerini destekler.
Çözüm yaklaşımı
- eAuction'ı kurumsal mimari hedefiyle Go mikroservis monorepo yapısında yeniden ele alıyorum; domain, use case ve repository sınırlarını Clean Architecture yaklaşımıyla ayırıyorum.
- Protobuf servis sözleşmeleri ve gRPC kullanıcı kayıt servisi geliştirdim; validation, bcrypt parola hash ve PostgreSQL/pgx kullanıcı deposu uyguladım.
- JWT access/refresh token ve Redis token blacklist/TTL bileşenleri geliştirdim; auth servisinin Docker build yapısı üzerinde çalıştım. Projeyi vakit buldukça geliştirmeye devam ediyorum.
Teknolojiler
- Go
- gRPC
- Protobuf
- PostgreSQL / pgx
- Redis
- JWT
- Docker