Otomat ve Personel Kart Operasyon Sistemi
Otomat işleten bir firmanın envanterden saha operasyonuna, telemetriden personel kart sistemine uzanan operasyon yazılımı. 15+ yıllık bir sistemin yerine sıfırdan yazılıyor.
Otomat (vending) üreten ve işleten, aynı zamanda kurumlara personel kart ve kredi sistemleri kuran bir firmanın uçtan uca operasyon yazılımı. Tek bir ürün değil, birbirine bağlı bir iş kolu bütünü: otomat envanteri ve konfigürasyonu, ürün ve hammadde reçeteleri, depo ve satınalma, plasiyer saha operasyonu, otomatlardan gelen telemetri, teknik servis, sözleşmeler ve personel kart sistemi.
Sistem çok kiracılı: tek veritabanında birden çok müşteri firması barınıyor, üstünde de kendi altındaki firmaları görebilen bir distribütör katmanı var.
Mevcut sistem 15+ yıllık bir ASP.NET WebForms uygulaması. WebForms modern .NET’e taşınamadığı için kademeli geçiş mümkün değil — sıfırdan yazılıyor. Ölçek küçük de değil: yalnızca otomat yönetimi tarafında 94 ayrı ekran var. Bu yüzden iş “yeni özellik yazmak” değil, çalışan bir sistemi anlayıp yerine koymak.
// Detaylı anlatım
Mimari
Modüler monolit — “ince modül, kalın çekirdek”. Tek uygulama, tek artefakt olarak dağıtılıyor; api, ingest ve worker rolleri aynı imajın farklı örnekleri.
Modül sınırları belge değil, derleyici tarafından zorlanıyor: her modül tek bir .csproj ve modüller birbirini yalnızca Contracts üzerinden görüyor. Altta entegrasyon, bildirim, ayar ve raporlama motorunu barındıran kalın bir çekirdek var; yeni müşteri veya yeni rapor eklemek çekirdeğe dokunmadan yapılabiliyor.
Yapılanlar
- Eski sistemin envanteri çıkarıldı: ekranlar, servisler ve veri akışları modül modül belgelendi.
- Mimari kanonik olarak tanımlandı; çelişki durumunda hangi dokümanın kazandığı açıkça yazıldı.
- Mimari kararlar gerekçeleriyle kayıt altına alındı (ADR), kırılgan varsayımlar ayrıca listelendi.
- Frontend iskeleti: giriş ekranı ve iş biriminden gelen öncelik tablosundan üretilen menü.
- Modül sırası teknik kolaylığa göre değil, operasyonun ihtiyacına göre belirlendi.
Rol: frontend. İki kişilik ekip, backend başka bir geliştiricide.