Türkiye'nin en büyük inovasyon ve girişimcilik bültenine katılın
Kanallar İlham Uygulamalar SSS Sözlük Giriş Üye Ol

Yazılım Geliştirme

/yazilim · 8.YIL

Fikirden çalışan ürüne yazılımın her hali: web, backend, veritabanı, mimari kararlar, kod kalitesi ve araçlar. Dil ve framework fark etmez; yazan herkesin ortak kanalı.

25 içerik Katıl
#yazılım geliştirme akışına dön
@fakazli · 16 gün önce

mikroservis mi monolit mi sorusu bizde nasıl sonuçlandı

Üç yıl önce mikroservise geçtik, geçen yıl bir kısmını geri birleştirdik. Süreçten çıkardıklarımızı paylaşayım çünkü bu tartışma hâlâ ideolojik yürüyor.

Neden geçmiştik: ekip büyüyordu, yayınlar birbirini bekliyordu, tek bir hata bütün sistemi durduruyordu. Sebepler gerçekti.

Ne oldu: on dört servise böldük. İlk altı ay harika gitti. Sonra şunlar başladı.

Yerel geliştirme ortamı kurmak yarım gün sürer oldu. Yeni gelen biri ilk haftasını kurulumla geçiriyordu.

Basit bir özellik üç servisi değiştirmeyi gerektiriyordu ve üç ayrı yayın koordinasyonu demekti.

Hata ayıklamak zorlaştı. İstek dört servisten geçiyordu ve nerede bozulduğunu bulmak için dağıtık izleme kurmamız gerekti.

Veri tutarlılığı sorun oldu. Tek veritabanında basit olan işlem, servisler arasında karmaşık bir koordinasyona dönüştü.

Altyapı maliyeti üç katına çıktı.

Geçen yıl ne yaptık: birbirine çok bağımlı olan altı servisi tekrar birleştirdik. Gerçekten bağımsız olan ve farklı ölçekleme ihtiyacı olan dördünü ayrı bıraktık.

Şimdiki kuralımız şu: bir parçayı ayırmak için üç şartın olması gerekiyor. Farklı ekip sahipleniyor olmalı, farklı ölçekleme ihtiyacı olmalı ve veri sınırı net olmalı.

Üçü yoksa ayırmıyoruz. Modüler bir monolit, kötü bölünmüş mikroservisten her açıdan iyi.
0 3 yorum
Yorumlar (3)
@sidarta · 13 gün önce 4
Üç şart kuralınız çok net, ben de benzer bir çerçeve kullanıyorum.

En çok atlanan şart veri sınırı. İki servis aynı tabloya yazıyorsa aslında ayrılmamışlar, sadece ağ üzerinden konuşan bir monolit yapmışsınız.

Bu durumda hem monolitin sadeliğini kaybediyorsunuz hem dağıtık sistemin karmaşıklığını alıyorsunuz. En kötü kombinasyon.

Veriyi ayıramıyorsanız servisi de ayırmayın. Bu tek kural çoğu hatalı bölmeyi engelliyor.
@gaponmychest · 9 gün önce 0
Geri birleştirme kararını almak cesaret ister, bunu paylaştığınız için teşekkürler.

Sektörde geri adım atmak başarısızlık sayılıyor ve o yüzden kimse yapmıyor. Kötü kararla yıllarca yaşanıyor.

Bizde de benzer bir durum var ama birleştirmeye kimse cesaret edemiyor çünkü mikroservis mimarisi yıllardır ekibin gururu.

Sizde bu kararı nasıl aldınız, direnç oldu mu? Teknik değil insani tarafını merak ediyorum.
@marul · 7 gün önce 3
Yerel geliştirme ortamı sorununa katılıyorum ama çözülebilir bir sorun bence.

Bizde herkesin bütün servisleri yerelde çalıştırması gerekmiyor. Üzerinde çalıştığınız servis yerelde, diğerleri paylaşımlı bir geliştirme ortamında.

Bu düzeni kurmak bir aylık iş ama kurulum süresini yarım günden on dakikaya indirdi.

Yani bu maddeyi mikroservisin kaçınılmaz bedeli olarak görmemek lazım, altyapı yatırımı eksikliği olarak görmek lazım.

Diğer maddelerinize katılıyorum ama.