Bir işletme yazılımında asıl mesele, her şey yolundayken ne yaptığı değil; bir şey ters gittiğinde neyi koruduğudur. İnternet koptuğunda, iki kasiyer aynı anda aynı ürünü sattığında, bir kayıt sonradan “düzeltilmek” istendiğinde ne olur? Aşağıdakiler, kod yazmadan önce kararlaştırdığımız ve sonradan pazarlığa açmadığımız kurallardır.
İlkelerimiz
Altı kural, altı gerekçe
Her kuralın yanında neden böyle olduğunu ve işletmeniz için ne anlama geldiğini yazdık. Bunlar pazarlama başlığı değil; kodun uyduğu, testlerin denetlediği kurallar.
Süreç
Bir özellik gemiye nasıl giriyor?
Her yeni özellik aynı dört adımdan geçer. Sıra değişmez: ekran en sonda gelir.
Teknoloji
Modern ve kanıtlanmış bir altyapı
Heyecan verici olanı değil, on yıl sonra da bakımı yapılabilecek olanı seçiyoruz. Tercihlerimiz endüstri standardı, açık ve yaygın teknolojiler.
- .NET + PostgreSQL çekirdeği — her şirkete ayrı, yedeklenebilir veritabanı.
- React web paneli, Flutter mobil uygulama — tek koddan Android ve iOS.
- Modüller birbirini doğrudan çağırmaz; olay (event) ile haberleşir. Olay, iş verisiyle aynı işlemde kaydedilir — "kaydettim ama yan etkiyi tetikleyemedim" durumu oluşmaz.
- Docker + Dokploy (Traefik) ile dağıtım; şifreli bağlantı ve güvenlik başlıkları altyapı katmanında zorunlu.
- Yetki, kiracı çözümleme, işlem bütünlüğü ve denetim yazımı ortak bir hat üzerinde çalışır — tek tek özelliklerin hatırlamasına bırakılmaz.
Eklemediklerimiz de kayıtlı
Bir kütüphane eklemek bugün hızlandırır, yarın borç bırakır: güvenlik güncellemesi, sürüm çakışması, terk edilme riski. Bu yüzden eklememe kararlarını da gerekçesiyle yazıyoruz.
- Arka plan işleri için popüler bir zamanlama kütüphanesi eklenmedi; platformun kendi mekanizması seçildi ve gerekçesi karar kaydına yazıldı.
- Modüller arası iletişim için ayrı bir mesaj kuyruğu eklenmedi; bu ölçekte gereksiz karmaşa olduğu değerlendirildi, ileride taşınabilecek şekilde tasarlandı.
- Yeni bir bağımlılık, kararı yazılmadan eklenmez.
Bağımlılık, ileride ödenecek bir borçtur. Az sayıda, iyi seçilmiş bağımlılık; çok sayıda kolay bağımlılıktan güvenlidir.
Kanıt
Söylediğimizi ölçüyoruz
Yukarıdakiler niyet beyanı değil; her değişiklikte denetlenen kurallar.
800’den fazla
Otomatik Test
İş kuralları, uçtan uca akışlar ve kiracı izolasyonu dahil.
14 yazılı
Mimari Karar Kaydı
Her büyük kararın gerekçesi, alternatifleri ve sonuçları yazılı.
3 platform
Web + Android + iOS
Hepsi aynı derleme ve test hattından geçer.
Her değişiklik
Derleme + Test Kapısı
Derleme ve testler yeşil olmadan ana dala birleştirilmez.
Taklit veritabanı yalan söyler
Entegrasyon testlerimiz bellekte taklit bir veritabanında değil, gerçek bir PostgreSQL örneği üzerinde çalışır. Eşzamanlı satışta stok kilidi, işlem geri alma, benzersizlik kısıtı gibi davranışlar ancak gerçek veritabanında doğru sınanır — taklit olan çoğu zaman "geçti" der.
Kuralı insan değil, test denetler
Modüllerin birbirinin içine sızmadığını ve hareket kayıtlarına silme/güncelleme kodu girmediğini gözden geçirmeye bırakmıyoruz: bunu ayrı mimari testler denetliyor. Kuralı ihlal eden bir kod, incelemeye gelmeden önce derleme hattında kırmızıya döner.
Operasyonunuzu birlikte konuşalım
Ne kullandığınızı ve nerede tıkandığınızı anlatın; bugünkü ürünümüz Business Suite işinize uyuyor mu birlikte bakalım.