Yaklaşım

Batunet Engi­ne­e­ring 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.

İlkeler

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.

01

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.

02

Ö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.

03

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.

04

Ö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.

05

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.

06

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.

Süreç

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

Karar kayıtları

Gerek­çe­le­riyle bel­ge­len­miş 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 belge

Örnek bir mimari karar kaydı.

Herhangi bir müşteriye ait bilgi içermeyen örnek kayıt. Temel mimari kararları bu formatta belgeliyoruz.

Architecture Decision RecordAlıntı
ADR-014Kabul edildiÖdemeleri idempotent olarak işlemek
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.

Projeniz hakkında konu­şa­lım.

Projenizi doğrudan şirket yönetimiyle görüşün.