Büyük Şirketler Neden Katmanlı Mimari Kullanır?
Ölçeğin Getirdiği Zorunluluk
Küçük bir projede her şeyi tek bir yerde tutmak cazip gelir. Hızlıdır, basittir, fazla düşünmek gerekmez. Beş ekran, iki geliştirici, üç ay — bu ölçekte mimari tartışması lüks görünebilir.
Ama o proje büyüdükçe, ekip genişledikçe, yıllar geçtikçe bu "basit" yapı bir kabusa dönüşür. Ve büyük şirketler bu kabusun içinden geçmiş, bedelini ödemiş kuruluşlardır. Katmanlı mimari onların çıkardığı sonuçtur.
Sorun Ölçekle Değişir
Tek geliştirici bir projeyi zihninde tutabilir. Kod tabanının neresinde ne olduğunu bilir, bağımlılıkları takip edebilir, değişikliğin etkisini tahmin edebilir.
On geliştirici bunu yapamaz. Yüz geliştirici kesinlikle yapamaz.
Büyük bir ekipte herkes aynı kod tabanına dokunduğunda çatışmalar kaçınılmazdır. Birinin değiştirdiği şey başkasının beklediği davranışı bozar. Kim neyi değiştirmeli, nereye bakmalı, neyi etkileyebilir — bu soruların net cevapları olmazsa ekip zamanının büyük bölümünü birbirini anlamaya değil birbirini onarmaya harcar.
Katmanlı mimari bu soruna yapısal bir çözüm sunar.
Katmanlar Takım Sınırlarını Çizer
Büyük şirketlerde katmanlar çoğunlukla takım sınırlarına karşılık gelir.
Veri katmanıyla ilgilenen ekip veritabanını, ağ çağrılarını ve önbellek stratejisini yönetir. İş mantığı katmanıyla ilgilenen ekip use case'leri geliştirir. UI katmanıyla ilgilenen ekip ekranları tasarlar ve implement eder.
Bu ayrım iki kritik şeyi sağlar. Birincisi, farklı ekipler birbirinin detaylarına müdahale etmeden paralel çalışabilir. İkincisi, katmanlar arasındaki arayüzler birer sözleşmeye dönüşür — bir ekip bu sözleşmeyi karşıladığı sürece implementasyonu istediği gibi değiştirebilir.
Değişime Karşı Dayanıklılık
Büyük şirketlerin teknolojileri değişir. Beş yıl önce kullanılan veritabanı kütüphanesi bugün desteklenmiyordur. Üç yıl önce benimsenen ağ kütüphanesinin daha iyisi çıkmıştır. UI paradigması evrilmiştir.
Katmanlı mimarisiz bir projede bu değişiklikler felakete dönüşür. Seçilen kütüphane tüm kod tabanına sızmış, onlarca dosyada doğrudan çağrılıyordur. Değiştirmek için projenin yarısını yeniden yazmak gerekir.
Katmanlı mimaride veri katmanının implementasyonu değişir ama iş mantığı katmanı bunun farkında bile olmaz. Sözleşme — arayüz — aynı kaldığı sürece dışarısı istediği gibi evrilebilir.
Büyük şirketler bunu bir tercih olarak değil, zorunluluk olarak öğrendi.
Test Edilebilirlik ve Güven
Büyük ölçekte yazılım geliştirmenin en kritik gereksinimi güven duygusudur. Bir değişiklik yapıldığında başka bir şeyin bozulup bozulmadığını anlayabilmek.
Bu güveni sağlamanın tek güvenilir yolu kapsamlı testlerdir. Ve kapsamlı testler ancak test edilebilir kod üzerinde yazılabilir.
Katmanlı mimari test edilebilirliği yapısal olarak destekler. İş mantığı katmanı, UI ve veritabanından bağımsız olduğu için saf JVM testleriyle hızla test edilir. Veri katmanı mock'lanabilir, UI katmanı izole edilebilir.
Büyük şirketlerde binlerce otomatik test çalışır — ve bu testlerin anlamlı olabilmesi için test edilebilir bir mimarinin var olması şarttır.
Feature Modülarizasyonu: İleri Seviye Uygulama
Katmanlı mimarinin büyük şirketlerdeki en somut yansıması modülarizasyondur.
Uygulama tek bir büyük modül yerine bağımsız feature modüllerine bölünür. Ödeme özelliği kendi modülünde, profil ekranı kendi modülünde, arama özelliği kendi modülünde yaşar.
Bu yapı derleme sürelerini dramatik biçimde kısaltır. Yalnızca değişen modül yeniden derlenir, geri kalanlar önbellekten gelir. Yüzlerce geliştiricinin çalıştığı projelerde bu kısalma saatler anlamına gelebilir.
Bunun yanında ekip bağımsızlığı da artar. Her feature ekibi kendi modülünü sahiplenir, başkasının modülüne dokunmadan çalışır. Çakışmalar azalır, hareket hızı artar.
Büyük Şirketlerin Paylaştığı Ortak Ders
Google, Netflix, Spotify, Airbnb — bu şirketlerin yayımladığı mimari blog yazıları ve konferans sunumlarında öne çıkan ortak bir tema vardır: Başlangıçta mimari yatırımı yapmak, uzun vadede katlanarak geri döner.
Hızlı büyüyen bir startup olarak mimariyi görmezden gelmek kısa vadede işe yarayabilir. Ama bir noktadan sonra teknik borç o kadar birikir ki yeni özellik eklemek mevcut olanı onarmaktan daha zor hale gelir. Mühendisler zamanlarını geliştirmeye değil, anlamaya harcar.
Katmanlı mimari bu noktanın ötelenmesini sağlar. Ve yeterince erken benimsendi mi, o noktanın hiç gelmesini.
Küçük Projeler İçin Ne Anlam İfade Eder?
Büyük şirketlerin uyguladığı her şeyi her projeye uygulamak şart değildir. Ama bu yaklaşımın ardındaki prensipleri anlamak her ölçekte fayda sağlar.
Sorumlulukları net biçimde ayırmak, bağımlılıkları bilinçli yönetmek, iş mantığını test edilebilir hale getirmek — bunlar proje büyüklüğünden bağımsız olarak değerli alışkanlıklardır.
Küçük projede öğrenilen bu alışkanlıklar, o proje büyüdüğünde ya da büyük bir takıma geçildiğinde en değerli varlık haline gelir. Mimariye yatırım yapmak kod yazmayı yavaşlatmaz — doğru yapıldığında tam tersine hızlandırır.