Batunet Engineering Method.
İlk görüşmeden uzun vadeli bakım ve işletime kadar teknik kararlarımızı ve sorumluluklarımızı belirleyen çalışma yaklaşımımız.
Her aşamada geçerli altı temel ilke.
Problemi anlamak, kritik kararları erkenden almak, en riskli yolu önce doğrulamak ve geliştirdiğimiz sistemin işletimini üstlenmek.
Geliştirmeden önce anlamak
Kod yazmaya başlamadan önce problemi, hedefleri ve başarı ölçütlerini netleştiriyoruz. Yanlış probleme iyi bir çözüm geliştirmek, projenin en maliyetli hatalarından biri olabilir.
Önce maliyetli kararlar
Sonradan değiştirilmesi maliyetli olan kararları erken değerlendirir ve gerekçeleriyle belgeleriz. Kolayca değiştirilebilen kararları ise ihtiyaç netleşene kadar açık tutabiliriz.
Tahmin yerine geri alınabilirlik
Gelecekteki her ihtiyacı tahmin etmeye çalışmak yerine değişikliği yönetilebilir tutuyoruz. Önemli kararları, geri alınabilir olup olmadıklarına göre değerlendiriyoruz.
Önce en riskli yolu doğrulamak
En riskli iş akışını, kapsam genişlemeden önce uçtan uca test ediyoruz. Böylece kritik sorunları projenin erken aşamasında ortaya çıkarıyoruz.
Hata senaryolarını test etmek
Hata durumlarını tasarlıyor ve canlı ortamda yaşanmadan önce test ediyoruz. Sistem davranışını yalnızca her şey yolundayken değil, sorun çıktığında da değerlendiriyoruz.
Geliştirdiğimiz sistemi işletmek
Sistemin izlenmesi, bakımı ve yönetimi ilk günden mimariye dahil edilir. Uzun vadede sistemi kendimiz işletecekmiş gibi tasarlıyoruz.
Yedi aşama: Frame’den Operate’e.
Her aşama belirli bir soruyu yanıtlar ve sonraki teknik kararlar için gerekli temeli oluşturur.
- 01
FrameProblemi netleştirme
Gerçekte hangi problemi çözüyoruz — ve çözmezsek ne olur?
Herhangi bir çözüm düşünülmeden önce asıl problem, sınırları ve ölçülebilir bir başarı tanımı belirlenir.
- 02
ModelModelleme
Sistemin kapsamı ve sorumluluk sınırları neler?
İş alanını (domain) ortak ve açık bir dille modelliyor, farklı sorumlulukları ayrı bağlamlarda tanımlıyoruz.
- 03
DecideKarar
Hangi kararları geri almak pahalıdır — ve bu kararları bilinçli olarak mı verdik?
Temel mimari kararları, değişiklik maliyeti henüz düşükken değerlendirir ve gerekçeleriyle birlikte belgeleriz.
- 04
ProveKanıtlama
En zor yol uçtan uca çalışıyor mu?
Kapsamı genişletmeden önce çalışan bir temel kurar, mimariyi en riskli iş akışı üzerinde doğrularız.
- 05
BuildGeliştirme
Her geliştirme adımı bağımsız olarak teslim edilebilir, test edilebilir ve geri alınabilir mi?
Doğrulanmış temel üzerinde küçük, test edilebilir ve geri alınabilir adımlarla geliştiririz. İlerleme her hafta görünür olur.
- 06
HardenSağlamlaştırma
Bir arıza olduğunda sistem nasıl davranır?
Hata senaryolarını, yükü ve güvenliği test ediyoruz. Sistemin normal koşulların yanı sıra sorun anlarında da nasıl davrandığını doğruluyoruz.
- 07
Operateİşletim
Beş yıl sonra biri bu sistemi güvenle değiştirebilecek mi?
Sistemi işletir, izler ve geliştirmeye devam ederiz — ve onu anlaşılır ve değiştirilebilir tutarız.
Gerekçeleriyle belgelenmiş kararlar.
Yöntemin hafızası, karar kayıtlarıdır (ADR'ler). Her aşama bunlara ekleme yapar, her aşama bunları revize edebilir. Bir ADR şunları kayda geçirir: bağlam, seçenekler, karar, sonuçlar — ve kararın geri alınabilir olup olmadığı.
Böylece yalnızca bir sistemin ne olduğu değil, neden öyle olduğu da korunur. Gerekçe korunduğu sürece bir sistem on yıl boyunca güvenle değiştirilebilir. Gerekçe kaybolduğunda ise her değişiklik bir risktir.
Örnek bir mimari karar kaydı.
Herhangi bir müşteriye ait bilgi içermeyen örnek kayıt. Temel mimari kararları bu formatta belgeliyoruz.
- Bağlam
- Ödeme olayları en az bir kez (at-least-once) teslim garantisiyle işlenir. Aynı olayın iki kez teslim edilmesi mükerrer kayda yol açmamalıdır.
- Karar
- Her ödeme bir idempotency anahtarı taşır. Bu anahtar, kayıt ile aynı işlem (transaction) içinde kontrol edilir ve kalıcı olarak saklanır. Bilinen anahtarlar işlem yapılmadan (no-op) onaylanır.
- Sonuçlar
- Mükerrer işleme yapısal olarak engellenir. Anahtar deposu iş hacmiyle birlikte büyür ve bir saklama süresi (retention) gerektirir. Tüketiciler anahtarı iletmek zorundadır.
- Reddedilen
- Mutabakat yoluyla sonradan tekilleştirme — mükerrer kayıtları çok geç fark eder.
