Eskiden spagetti kod yazmak bir emek işiydi. Elinle, tırnağınla, o if-else bloklarını iç içe geçirir, include dosyaları arasında kaybolurdun. Şimdi devir değişti. Artık AI sayesinde, saniyeler içinde sadece spagetti kod değil, Spagetti Mimari üretebiliyoruz. Adına da “Modern Mimari” diyoruz.
Hazırsanız, AI’ya “Bana ölçeklenebilir bir sistem kur” dediğinizde başınıza gelecek o trajikomik senaryoları ve mimariyi nasıl çöp edeceğinizi inceleyelim.
1. Mikroservis Cehennemi: “Her Fonksiyona Bir Servis”
AI, mikroservisleri çok sever. Neden? Çünkü dokümantasyonlarda hep “best practice” olarak o geçer. AI’ya “Bir e-ticaret sitesi yap” dersiniz, size daha ilk aşamada 25 tane servis önerir.
- Hata: Henüz 10 kullanıcısı olmayan proje için
AuthService,EmailService,LogService,PaymentServicediye dünyaları ayırmak. - Sonuç: Distributed Monolith (Dağıtık Monolit). Servisler o kadar birbirine bağımlıdır ki,
Authservisi güncellenince bütün sistem çöker. Tebrikler, artık tek bir repo yerine 25 farklı repoda aynı spagettiyi yönetiyorsunuz!
2. Veritabanı Karnavalı: “Hepsinden Bir Tutam”
AI bazen aşırı “hype” trenine biner. Size kullanıcı bilgileri için PostgreSQL, loglar için MongoDB, cache için Redis, hızlı arama için ElasticSearch ve sırf “havalı” olsun diye bir de Vector DB (Pinecone falan) önerir.
- Hata: Veri tutarlılığını (Data Consistency) düşünmeden her şeyi farklı yere yazmak.
- Tartışılan Konu: “Abi AI dedi ki relational data için NoSQL daha hızlıymış.” Hayır kardeşim, AI sadece internetteki en çok ‘upvote’ alan yanlış bilgiyi sana sattı.
3. “Event-Driven” Ama Nereye Driven?
AI’ya “Sistemler arası iletişim nasıl olsun?” diye sorarsınız. Cevap bellidir: “Kafka kullan, Event-Driven olsun.”
- Hata: Basit bir
order-completeişlemi için 15 tane farklı event fırlatıp, hangi event’in hangi servisi tetiklediğini takip edememek. - Gizli Hazine: Circular Dependency (Dairesel Bağımlılık). A servisi B’ye event atar, B işler C’ye atar, C de “vibe” gereği tekrar A’ya atar. Tebrikler, sonsuz bir döngü ve şişen bir Kafka queue sahibi oldunuz. Production’da CPU %100 olunca AI’ya “Neden?” diye sorarsınız, o da size “Scale et” der.
4. Boilerplate Okyanusunda Boğulmak
AI, Clean Architecture (Soğan Mimari) bayılır. Bir User kaydetmek için; Controller, Service, Repository, Entity, DTO, Mapper, Interface ve Implementation yazar.
- Hata: Toplamda 5 satır iş yapacak kod için 12 tane dosya oluşturmak.
- Sonuç: Kodu okumaya çalışan developer, 4. dosyadan sonra ne yapmaya çalıştığını unutur. Mimari “temiz” görünür ama içindeki mantık AI’nın halüsinasyonlarıyla doludur.
5. API Overkill: “GraphQL Her Derde Devadır”
AI’ya “Frontend ile nasıl haberleşelim?” dersiniz. AI hemen “GraphQL kullan, sadece ihtiyacın olanı çek” der.
- Hata: Basit bir blog sitesi için GraphQL şemaları, resolver’lar ve kompleks query’ler arasında kaybolmak.
- Teknik Detay: AI’nın yazdığı resolver’larda o meşhur N+1 problemi gizlidir. Veritabanına bir istek yerine 1001 istek atarsınız ama “vibe”ınız çok moderndir.
6. “Business Logic” Nerede? (Saklambaç Oynayan Kodlar)
AI kod yazarken iş mantığını (Business Logic) bazen Controller’a, bazen Entity’nin içine, bazen de “vibe” öyle gerektirdiği için bir helper fonksiyonuna yazar.
- Hata: Mantığın belli bir merkezi olmaması (Anemic Domain Model).
- Sonuç: Bir indirim hesaplamasını değiştirmek için projede 15 farklı dosyada “search” yapmak zorunda kalırsınız.
7. Auth ve Security: “Middleware’i AI’ya Bıraktım”
“Abi AI çok güvenli yazar” yanılgısı… AI bazen auth kontrolünü en dış katmanda yapar ama iç servislerde “nasılsa içerideyiz” diyerek kapıları açık bırakır.
- Hata: Servisler arası iletişimde (mTLS, JWT vb.) güvenliği AI’nın “standart” örneklerine bırakmak.
- Sık Yapılan Hata: AI’nın önerdiği CORS ayarlarının
Origin: '*'olması. “Çalışıyor mu? Çalışıyor. O zaman vibe tamam.”
8. State Management Karmaşası: Redux vs. Context vs. AI
Frontend mimarisinde AI her şeyi global state’e (Redux/Zustand) atmaya bayılır.
- Hata: Sadece bir inputun içindeki metni bile global state’te tutup, her harf basışta tüm uygulamayı re-render etmek.
- Gizli Hazine: Prop-drilling’den kaçarken “State Hell”e düşmek. AI size 50 tane provider yazar,
main.tsxdosyanız iç içe geçmiş etiketlerden bir DNA sarmalına döner.
9. Infrastructure as Code (IaC) Ama “Manual” Müdahale
AI size harika bir Terraform veya Docker Compose dosyası yazar. Ama bir yerde hata verir. Siz o hatayı düzeltmek yerine Cloud konsolundan “elle” bir ayar değiştirirsiniz.
- Hata: AI’nın kurduğu mimariyle gerçek sistemin birbirinden kopması (Drift).
- Sonuç: Bir sonraki
terraform applykomutunda manuel yaptığınız tüm ayarların AI tarafından silinmesi ve o gece gelen o meşhur “Site down” araması.
10. Test Edilemeyen Mimari
AI’ya kod yazdırırken mimariyi test edilebilir (testable) kurmasını söylemezseniz, size birbirine sımsıkı sarılmış (tightly coupled) sınıflar verir.
- Hata: Mock’lanamayan servisler ve veritabanına bağımlı unit testler.
- Acı Gerçek: Test yazmak için mimariyi baştan aşağı değiştirmeniz gerektiğini fark ettiğinizde, AI çoktan bir sonraki projenin “vibe”ına geçmiştir.
Özetle; Mimari, bir yapboz değil, bir dengedir. AI size dünyadaki tüm havalı tool’ları kullanarak bir gökdelen çizebilir ama o gökdelenin altında sağlam bir mühendislik mantığı yoksa, ilk rüzgarda (yüksek trafik, yeni feature isteği) o bina üzerinize yıkılır.
AI’ya “Nasıl yapalım?” diye sormadan önce, “Bizim buna gerçekten ihtiyacımız var mı?” diye kendinize sorun. Yoksa Spagetti 2.0’ın içinde boğulurken halityesil.com’u açıp bu yazıyı bir daha okumak zorunda kalırsınız. 😉