Ürün ve yazılım geliştirme
Angular, Ionic/Capacitor ve Node.js ile çok kiracılı web ve mobil ürünler kuruyorum. İki tip iş alıyorum: sıfırdan kurulum ve devralma — yani dokümantasyonu eksik, geliştiricisi ayrılmış bir kod tabanını yaşatılabilir hale getirmek.
Hangi teknolojilerle çalışıyorum?
Önyüzde Angular ve mobil için Ionic/Capacitor, arka uçta Node.js ve Express ile Sequelize, veritabanında MySQL ve SQLite, kuyrukta Redis ve BullMQ, dosya tarafında MinIO kullanıyorum. Teslim Docker Compose ve GitHub Actions ile yapılır. Bu yığını seçme sebebim moda değil, aynı kod tabanının web ve mobilde tek elden yürütülebilmesi.
- Önyüz
- Angular · TypeScript
- Mobil
- Ionic · Capacitor · (geçmişte Flutter)
- Arka uç
- Node.js · Express · Sequelize
- Veri
- MySQL 8 · SQLite · Redis
- Altyapı
- Docker Compose · nginx · GitHub Actions
- Masaüstü
- Tauri 2 · Rust · gömülü SQLite
Çok kiracılı (multi-tenant) mimari neden ayrı bir uzmanlık?
Çok kiracılı bir sistemde tek bir kod tabanı ve tek bir veritabanı birden çok müşteriye hizmet eder. Zorluk ölçekte değil, izolasyondadır: her sorgunun, her dosya erişiminin, her arka plan işinin kiracı kimliğiyle sınırlanması gerekir. Bir tek yerde unutulduğunda sonuç performans sorunu değil, veri sızıntısıdır.
- Sorgu düzeyinde izolasyon. Kiracı kimliği isteğe bağlı bir filtre değil, veri katmanının zorunlu parçasıdır.
- Arka plan işleri. Kuyruğa düşen her işin hangi kiracıya ait olduğu iş yükünün içinde taşınır; “şu an aktif kiracı” gibi bir bağlam arka planda yoktur.
- Dosya ve nesne depolama. Yol şeması kiracıya göre bölünür; imzalı bağlantıların süresi ve kapsamı sınırlanır.
- Göç disiplini. Şema değişiklikleri yıkıcı değil eklemeli yapılır (genişlet–daralt): önce yeni alan eklenir, kod iki alanı da yazar, sonra eski alan kaldırılır. Tek bir göç adımıyla tüm kiracıları riske atmak kabul edilemez.
- Testin rolü. İzolasyon kuralları yorumla değil testle korunur; kiracı sızıntısı testleri paketin en kritik bölümüdür.
Bu disiplini teorik olarak değil, üretimdeki bir üründe uyguladım: 19 modül grubuna ayrılmış, 4.000’den fazla testle korunan çok kiracılı bir CRM. Teknik detayı burada.
Devralınan bir projeye nasıl başlıyorum?
Devralınan bir kod tabanında ilk iş kod yazmak değil, haritalamaktır. İlk 1–2 hafta bir denetime ayrılır: neyin çalıştığı, neyin çalışıyor göründüğü ve en riskli üç noktanın nerede olduğu dosya ve satır düzeyinde çıkarılır. Ancak bu haritadan sonra değişikliğe başlarım.
- Çalıştırma: proje yerel ortamda ayağa kalkıyor mu, kaldırmak ne kadar sürüyor.
- Sınırlar: veri modeli, yetki kuralları ve dış bağımlılıklar çıkarılır.
- Risk taraması: kimlik doğrulama, para hesabı, veri izolasyonu ve göç adımları ayrı ayrı incelenir.
- Test durumu: hangi bölüm test altında, hangisi değil. Testsiz ve riskli kesişim önce kapatılır.
- Sıralama: bulgular etkiye göre sıralanır ve ilk üç madde bir sonraki dilimin kapsamı olur.
Denetim tek başına da alınabilir. Kodu değiştirmeden, yalnızca bulgu raporu olarak. Devralma kararını vermeden önce ne satın aldığınızı bilmek, çoğu zaman en ucuz adımdır.
Yapay zeka destekli geliştirme ne değiştiriyor?
Yapay zeka destekli geliştirme, tek kişinin üretebileceği kod hacmini büyütüyor ama kalite tavanını yükseltmiyor. Ölçtüğüm kadarıyla asıl fark modelde değil: koşum ortamı ve görev tasarımı sonucu çok daha fazla etkiliyor. Pratikte bu, mimari kararların ve gözden geçirmenin öneminin azalmadığı, arttığı anlamına geliyor.
Kendi ölçümlerimde koşum ortamı değişikliği puanı ±11, görev ve komut tasarımı ±18, örnekleme parametreleri ise yalnızca ±2–3 puan oynattı. Yani “hangi model” sorusu, “işi nasıl tarif ettiğin” sorusunun yanında küçük kalıyor. Ölçümün ayrıntısı.
- Her değişiklik testle korunur; üretilen kod gözden geçirilmeden birleştirilmez.
- “Bitti” demenin tanımı sabittir: testler ve lint yeşil, aksi halde iş bitmemiştir.
- Proje başına yazılı kurallar dosyası tutulur — sürüm numaraları, alan kuralları ve değişmezler orada durur.
- Var olmayan API uydurulmaz; şüpheli her çağrı sürüm notundan doğrulanır.
Ürün geliştirme hakkında sık sorulan sorular
Bir ürünü sıfırdan kurmak ne kadar sürer?
Kullanılabilir bir ilk sürüm 6 hafta ile 4 ay arasında çıkar; çok kiracılı, rol tabanlı yetkilendirmesi olan ve mobil eşleniği bulunan bir ürün 6–9 ayı bulur. Süreyi büyüten şey ekran sayısı değil, kural sayısıdır: fiyatlandırma, vergi, indirim ve yetki kuralları ne kadar çoksa süre o kadar uzar.
Mobil uygulama ayrı bir proje mi?
Ionic ve Capacitor kullanıldığında ayrı bir proje değil, aynı kod tabanının ikinci bir hedefidir. Webde yapılan değişiklik mobil tarafa da yansıtılır ve bu bir kural olarak takip edilir. Tamamen yerel (native) davranış gerektiren bir ihtiyaç varsa bu ayrıca değerlendirilir.
Kod bizde mi kalıyor?
Evet. Depo sizin hesabınızda durur, ben katkıda bulunurum. Teslimde kurulum betikleri, çalıştırma dokümanı ve ortam değişkenleri listesi birlikte verilir. Sizin ekibinizin devralamayacağı bir teslim, teslim sayılmaz.
Testsiz bir proje devralır mısınız?
Evet, ama ilk iş test yazmak olmaz. Önce en riskli üç alan belirlenir (kimlik doğrulama, para hesabı, veri izolasyonu genellikle ilk üçtür) ve testler oradan başlar. Tüm kod tabanını kapsamaya çalışmak, devralınan bir projede zamanın en kötü harcanma biçimidir.
Son güncelleme: