Backend Geliştirme Nedir, Neden İşin Görünmeyen Omurgasıdır?
Backend geliştirme, bir uygulamanın kullanıcının hiç görmediği tarafını üretme işidir: iş kurallarının çalıştığı sunucu kodu, verinin saklandığı ve sorgulandığı veritabanı, arayüzün beslendiği servisler, kimlik doğrulama ve yetkilendirme katmanı, arka planda sessizce dönen görevler ve tüm bunların ayakta kalmasını sağlayan altyapı. Kullanıcı bir butona bastığında ekranda gördüğü animasyon frontend'in işiyse, o tıklamanın ardından yapılan hesap, kaydedilen kayıt, gönderilen e-posta ve düşülen stok backend'in işidir.
Bu katmanın görünmez olması, önemsiz olduğu anlamına gelmez; tam tersine bir işletmenin dijital tarafındaki maliyetlerin ve risklerin çoğu burada birikir. Kötü tasarlanmış bir veritabanı şeması, ilk yıl kimseyi rahatsız etmez; kayıt sayısı büyüdüğünde raporların dakikalar sürmesine yol açar. Yetkilendirmesi baştan savma yazılmış bir servis, bir kullanıcının başka bir müşterinin verisini görebilmesi demektir. Kopyala-yapıştır çoğaltılmış iş mantığı, tek bir kuralın değişmesi gerektiğinde on ayrı yerde düzeltme yapmak ve birini unutmak demektir. Frontend'deki bir hata çirkin görünür, backend'deki bir hata para ve itibar kaybettirir.
Marmaragen olarak 2015'ten beri İstanbul Maltepe'den Türkiye geneline yazılım hizmeti veriyoruz; 150'den fazla projeyi yayına aldık ve 250'yi aşkın müşteriyle çalıştık. Bu süre boyunca hem sıfırdan kurulan sistemleri hem de başkalarından devraldığımız, yıllarca yamayla ayakta tutulmuş projeleri gördük. Devraldığımız projelerde en sık karşılaştığımız tablo şudur: uygulama çalışıyordur, hatta müşteri memnundur; ancak her yeni özellik bir öncekinden daha uzun sürmektedir. Bunun sebebi neredeyse her zaman aynıdır — iş mantığının, veri erişiminin ve sunum katmanının birbirine karışmış olması.
Bizim backend anlayışımız bu yüzden "çalışsın yeter" değil, "iki yıl sonra da geliştirilebilsin" üzerine kuruludur. Katmanları ayırır, iş kurallarını tek bir yerde toplar, veri erişimini soyutlar ve testlerle koruruz. Bu sayfada teknoloji tercihlerimizi, mimari yaklaşımımızı, veritabanı ve güvenlik pratiklerimizi, DevOps sürecimizi ve fiyatı belirleyen faktörleri açık biçimde anlatıyoruz.
Marmaragen Backend Geliştirme Yaklaşımı
Servis mimarisi: mikroservis, message queue ve event-driven yapılar
Mimari kararları modaya göre değil, ihtiyaca göre veriyoruz. Küçük ve orta ölçekli projelerde iyi katmanlanmış tek parça bir uygulama, mikroservis kalabalığından hem daha hızlı hem de çok daha ucuzdur. Buna karşılık modülleri birbirine yapıştırmayız: her modül kendi sınırında durur, dışarıya net bir arayüz sunar ve gerektiğinde ayrı bir servise taşınabilecek şekilde yazılır. Böylece bugün basit bir yapı işletirsiniz, yarın büyüdüğünüzde parçalamak yeniden yazmak anlamına gelmez.
Yük veya ekipler gerçekten ayrıştığında mikroservis mimarisine geçeriz. Servisler arası iletişimde senkron çağrıların her yerde kullanılmasının yarattığı kırılganlığı biliyoruz; bu yüzden uzun süren ve anlık cevap gerektirmeyen işleri message queue üzerinden yürütürüz. Fatura üretimi, toplu e-posta gönderimi, görsel işleme, dış sisteme veri aktarımı gibi işler kuyruğa alınır; kullanıcı beklemez, dış servis geçici olarak yanıt vermediğinde iş kaybolmaz, yeniden denenir. Event-driven yaklaşımda ise modüller birbirini doğrudan çağırmak yerine olay yayınlar: "sipariş oluşturuldu" olayına stok, muhasebe ve bildirim modülleri kendi başlarına tepki verir. Bu, yeni bir modül eklemenin mevcut kodu değiştirmeyi gerektirmediği bir yapı üretir.
Veri modeli ve iş mantığı: temiz katmanlar, öngörülebilir davranış
Her projeye veri modeliyle başlarız, ekranla değil. Varlıklar, aralarındaki ilişkiler, hangi verinin ne zaman değiştiği ve hangi kuralların değişmez olduğu netleşmeden kod yazmaya başlamak, ilerleyen haftalarda mutlaka geri dönüp bozulan bir temel demektir. Şema tasarımında normalizasyonu esas alır, raporlama gibi okuma yoğun ihtiyaçlarda ise bilinçli ve belgelenmiş biçimde denormalizasyona gideriz.
İş mantığı katmanını sunum ve veri erişiminden ayırırız. Denetleyiciler (controller) yalnızca isteği alır ve doğrular; asıl kural servis katmanında yaşar; veritabanına erişim ayrı bir katmanda soyutlanır. Bu ayrım sayesinde aynı iş kuralı hem web arayüzünden, hem mobil uygulamadan, hem de zamanlanmış bir görevden aynı şekilde çalışır. Kritik iş akışlarını otomatik testlerle koruruz; böylece altı ay sonra yapılan bir değişiklik, kimsenin aklında kalmamış bir kuralı sessizce bozamaz. Arayüz tarafındaki karşılığı için frontend geliştirme ekibimizle aynı sözleşme üzerinden çalışırız.
Güvenlik ve DevOps'un baştan tasarıma dahil edilmesi
Güvenliği projenin sonunda eklenen bir kontrol listesi olarak görmüyoruz. Kimlik doğrulama ve yetkilendirme modeli, veri erişim kuralları, hassas verinin nasıl saklanacağı ve kayıtların (log) ne tutup neyi tutmayacağı ilk tasarım toplantısında konuşulur. Aynı şey yayın süreci için de geçerlidir: uygulamanın nasıl paketleneceği, ortamlar arasında nasıl taşınacağı ve geri alınacağı, kod yazılmadan önce kararlaştırılır. Sonradan eklenen güvenlik yamaları ve elle yapılan yayınlar, projenin ilerleyen aylarında en çok zaman kaybettiren iki kalemdir; ikisini de baştan otomatikleştiriyoruz.
Backend Geliştirme Sürecimiz: Adım Adım
Sunucu tarafı geliştirme, görünür çıktısı geç gelen bir iştir; bu yüzden sürecin şeffaf ve ölçülebilir olması kritiktir. Aşağıdaki beş adım, hem sıfırdan kurduğumuz sistemlerde hem de devraldığımız projelerin yeniden yapılandırılmasında uyguladığımız çerçevedir:
- Analiz ve veri modeli — İş akışlarınız, kullanıcı rolleri, entegre olunacak dış sistemler ve raporlama ihtiyaçları çıkarılır. Varlıklar, ilişkiler ve değişmez iş kuralları belgelenir; hangi verinin nerede tekil kaynağa sahip olacağı netleştirilir. Bu adımın çıktısı, geliştirme boyunca referans alınan bir veri modeli ve akış şemasıdır.
- Mimari ve teknoloji kararı — Projenin yük profili, ekip yapısı ve entegrasyon ihtiyaçlarına göre teknoloji yığını (Node.js, Django/Flask, Laravel, .NET), tek parça mı yoksa servis tabanlı mı ilerleneceği, veritabanı motoru ve önbellek stratejisi belirlenir. Kararların gerekçeleri yazılı olarak paylaşılır.
- Geliştirme ve servis katmanı — Sprint temelli ilerleriz. Her sprint sonunda çalışan bir sürüm ortaya çıkar; iş mantığı, veri erişimi ve servis uçları (endpoint) katmanlı biçimde yazılır, kritik akışlar test edilir. Arayüz ekibi, servis sözleşmesi hazır olduğu anda paralel çalışmaya başlar.
- Güvenlik ve performans testleri — Kimlik doğrulama ve yetki sınırları senaryolarla denenir, girdi doğrulama ve enjeksiyon savunmaları kontrol edilir. Sorgu planları incelenir, eksik indeksler eklenir, yavaş uç noktalar yük altında ölçülür ve önbellekleme noktaları belirlenir.
- Yayın, izleme ve bakım — Uygulama konteynerlenir, CI/CD hattı üzerinden aşamalı olarak yayına alınır. Hata takibi, metrik toplama ve uyarı kuralları devreye girer; kaynak tüketimi ve hata oranları izlenir. Yayın sonrası düzeltmeler, güvenlik güncellemeleri ve yeni özellikler bakım döngüsünde sürer.
Kullandığımız Backend Teknolojileri
Tek bir teknolojiye bağlanmış ekipler, her problemi ellerindeki alete benzetmek zorunda kalır. Biz dört ana yığında üretim tecrübesine sahibiz ve tercihi projenin gerçek ihtiyacına göre yapıyoruz.
Node.js
Olay döngüsü tabanlı yapısı sayesinde çok sayıda eşzamanlı bağlantıyı düşük kaynakla taşır. Gerçek zamanlı bildirim, canlı sohbet, anlık veri akışı ve WebSocket gerektiren senaryolarda ilk tercihimizdir. Frontend tarafı da JavaScript/TypeScript ile geliştirilen projelerde tek dil kullanmak, ekip içi bilgi paylaşımını ve tip tanımlarının paylaşılmasını kolaylaştırır. Express ve NestJS ile katmanlı, test edilebilir yapılar kuruyoruz.
Python: Django ve Flask
Django, yönetim paneli, kimlik doğrulama ve veri katmanı gibi tekrar eden ihtiyaçları hazır sunduğu için veri yoğun iç sistemlerde geliştirme süresini belirgin biçimde kısaltır. Kurumsal raporlama, veri işleme ve analitik bileşen içeren projelerde Python ekosisteminin gücü ayrıca avantaj sağlar. Daha küçük ve odaklı servislerde, gereksiz yapı taşımamak için Flask ile hafif çözümler üretiyoruz.
PHP: Laravel
Laravel, iş uygulamalarında ihtiyaç duyulan kuyruk yönetimi, zamanlanmış görevler, olay sistemi ve ORM katmanını olgun biçimde sunar. Kurumsal portallar, üyelik sistemleri, sipariş ve stok yönetimi gibi projelerde hızlı ve öngörülebilir bir geliştirme sağlar. Türkiye'deki barındırma ekosistemiyle uyumu ve geniş geliştirici havuzu, devir ve uzun vadeli bakım açısından da pratik bir avantajdır.
.NET
Kurumsal tarafta mevcut sistemleri Microsoft ekosisteminde olan işletmeler için doğal seçimdir. Güçlü tip sistemi, olgun kütüphane altyapısı ve yüksek performansı; çok kullanıcılı, entegrasyon yoğun ve uzun ömürlü kurumsal uygulamalarda kendini gösterir. ERP ve muhasebe sistemleriyle entegrasyon gerektiren projelerde .NET tabanlı servisler kurmayı sıklıkla öneriyoruz.
Veritabanı Tasarımı ve Performans
Backend performansının büyük bölümü veritabanında kazanılır ya da kaybedilir. Uygulama kodunda kazanılan milisaniyeler, indekssiz bir sorgunun saniyeleri yanında anlamsız kalır. Bu yüzden veri katmanını ayrı bir uzmanlık alanı olarak ele alıyoruz.
MySQL, yaygın kullanımı ve olgunluğuyla klasik iş uygulamalarında sağlam bir tercihtir. PostgreSQL'i ise karmaşık sorgular, JSON alanları, coğrafi veri ve güçlü bütünlük kuralları gerektiren projelerde öneriyoruz; ilişkisel disiplini korurken esneklik sunması onu birçok modern projede varsayılan seçeneğimiz yapıyor. MongoDB'yi şeması sık değişen, belge yapısına doğal olarak uyan veriler için kullanıyoruz; ancak ilişkisel veriyi belge veritabanına zorlamanın uzun vadede yarattığı sorunları bildiğimiz için bu tercihi gerekçesiz yapmıyoruz. Redis ise önbellekleme, oturum saklama, oran sınırlama sayaçları ve kuyruk altyapısı için neredeyse her projede yanımızda.
Performans tarafında çalışmamız ölçümle başlar: yavaş sorgu kayıtları incelenir, sorgu planları çıkarılır, en çok çağrılan uç noktaların gerçek maliyeti hesaplanır. Sonra sırasıyla indeks stratejisi, sorgu yeniden yazımı, gereksiz veri çekiminin ayıklanması ve N+1 sorgu tuzaklarının temizlenmesi gelir. Bunlar bittiğinde hâlâ ihtiyaç varsa önbellekleme devreye girer — çünkü önbellek, kötü sorguyu düzeltmez, yalnızca gizler. Okuma yükü çok yüksek sistemlerde okuma kopyaları, büyüyen tablolarda bölümleme (partitioning) ve arşivleme stratejileri kurgularız. Veri modeli ve raporlama ihtiyacı iç içe geçen projelerde web yazılım hizmetimiz kapsamındaki panel ve otomasyon çözümleriyle bütünleşik ilerleriz.
Backend Güvenliği: Kimlik Doğrulama, Yetki ve Veri Koruma
Backend, sistemin tüm verisine erişimi olan katmandır; dolayısıyla saldırganın da asıl hedefidir. Güvenliği tek bir önlemle değil, birbirini destekleyen katmanlarla kuruyoruz.
Kimlik doğrulamada oturum tabanlı ya da JWT tabanlı modelleri projenin yapısına göre kullanıyoruz. Mobil uygulama ve birden çok istemcinin aynı servisi tükettiği senaryolarda kısa ömürlü erişim anahtarı ve yenileme anahtarı ikilisiyle çalışır, anahtarların iptal edilebilir olmasını sağlarız. Yetkilendirmede rol tabanlı modelin ötesine geçip kaynak sahipliğini de kontrol ederiz: bir kullanıcının "yönetici" olması, başka bir müşterinin kaydını görebileceği anlamına gelmez. Çok kiracılı (multi-tenant) sistemlerde veri izolasyonu ayrı bir test başlığıdır.
Girdi doğrulamayı istemciye asla bırakmayız; her istek sunucu tarafında şemasına göre doğrulanır. SQL enjeksiyonuna karşı parametreli sorgular, XSS'e karşı çıktı kodlaması, CSRF'e karşı token doğrulaması standarttır. Parolalar modern algoritmalarla özetlenerek saklanır, hassas alanlar gerektiğinde şifrelenir. Rate limiting ile kaba kuvvet denemeleri ve kötüye kullanım sınırlanır; kritik uç noktalarda ek doğrulama katmanları uygulanır. Tüm trafik SSL/TLS üzerinden taşınır ve sertifika yönetimi otomatikleştirilir. Kayıt tutarken de dikkatliyiz: hata ayıklamayı mümkün kılacak kadar bilgi tutar, parola ve kart verisi gibi hassas alanları kayıtlara asla yazmayız. Derinlemesine denetim ve sızma testi ihtiyacında web güvenliği hizmetimiz devreye girer.
Docker, CI/CD ve Bulut Yayınlama
"Benim bilgisayarımda çalışıyordu" cümlesi, yayın süreçlerindeki en pahalı cümledir. Docker ile uygulamayı çalışma zamanı, kütüphaneleri ve yapılandırmasıyla birlikte paketleyerek bu cümleyi ortadan kaldırıyoruz. Geliştirme, test ve üretim ortamları aynı imajdan doğar; sürüm farklarından kaynaklanan sürpriz hatalar büyük ölçüde biter. Çok bileşenli projelerde uygulama, veritabanı, önbellek ve kuyruk servisleri tek bir yapılandırmayla ayağa kalkar; yeni bir geliştiricinin projeye dahil olması saatler değil dakikalar sürer.
CI/CD hattında her kod gönderimi otomatik olarak derlenir, testlerden ve statik analizden geçirilir; başarısız olan hiçbir değişiklik ana dala giremez. Onaylanan sürümler önce hazırlık (staging) ortamına, oradan da kontrollü biçimde üretime çıkar. Geri alma (rollback) yolu her zaman açıktır: bir sorun fark edildiğinde önceki sürüme dönmek dakikalar sürer, gece yarısı elle dosya kopyalanmaz. Veritabanı değişikliklerini de sürümlenmiş göç (migration) dosyalarıyla yönetiriz; şema değişiklikleri kod ile aynı disiplinle ilerler.
Bulut tarafında altyapıyı projenin yüküne ve bütçesine göre kurgularız: tek sunuculu sade bir kurulumdan, yük dengeleyici arkasında yatay ölçeklenen çok örnekli yapılara kadar. Otomatik ölçekleme, sağlık kontrolleri, merkezi kayıt toplama ve metrik panoları kurulumun parçasıdır. Sunucu ve barındırma tarafını uçtan uca üstlenmemizi isterseniz web hosting hizmetimizle birlikte tek elden yönetilen bir çözüm sunuyoruz.
Servis Katmanı: Backend'in Dış Dünyaya Açılan Yüzü
Modern bir backend, tek bir web arayüzüne hizmet etmez; web sitesi, mobil uygulama, yönetim paneli, bayi portalı ve iş ortaklarının sistemleri aynı iş mantığını tüketir. Bu yüzden servis katmanını en baştan çok istemcili düşünürüz. İyi tasarlanmış bir servis sözleşmesi, ekiplerin birbirini beklemeden çalışabilmesini sağlar: arayüz geliştiricisi sözleşmeye göre kodlamaya başlarken sunucu tarafı gerçek uygulamayı yazar.
Uç nokta tasarımında tutarlılık, öngörülebilir hata yanıtları, sayfalama ve filtreleme standartları ile sürüm yönetimi üzerinde titizlikle dururuz; çünkü yayına çıkmış bir servisi bozmadan geliştirebilmek, backend olgunluğunun en somut göstergesidir. Servis tasarımı, dokümantasyon, üçüncü parti entegrasyonlar ve gateway katmanı konularının tamamını API geliştirme hizmetimiz sayfasında ayrıntılı olarak anlatıyoruz; iki hizmet çoğu projede iç içe yürür.
Arka Plan Görevleri, Zamanlanmış İşler ve Bildirimler
Bir uygulamanın kalitesi, kullanıcının beklemek zorunda kalmadığı işlerin sayısıyla da ölçülür. Rapor üretimi, toplu bildirim gönderimi, dış sisteme veri aktarımı, görsel boyutlandırma veya büyük dosya işleme gibi ağır görevleri istek-yanıt döngüsünün içinde çalıştırmak; zaman aşımı hataları, yarıda kalan işlemler ve kilitlenen ekranlar üretir. Biz bu tür işleri kuyruğa alır, işçi süreçlerle arka planda yürütür ve kullanıcıya işin durumunu şeffaf biçimde gösteririz.
Zamanlanmış görevler de aynı disiplinle ele alınır. Gecelik mutabakat, düzenli veri senkronizasyonu, süresi dolan kayıtların temizlenmesi veya periyodik özet e-postaları; hangi sıklıkta çalışacağı, başarısız olduğunda kaç kez yeniden deneneceği ve kime uyarı düşeceği tanımlanmış işlerdir. Sessizce durmuş bir zamanlanmış görevin haftalar sonra fark edilmesi klasik bir üretim sorunudur; bu yüzden görevlerin çalışıp çalışmadığını da izleriz. Bildirim tarafında e-posta, SMS ve anlık bildirim kanallarını tek bir soyutlama üzerinden yönetir, gönderim kayıtlarını tutar ve tekrar eden gönderimleri engelleriz.
Mevcut Backend'in Devralınması ve İyileştirilmesi
Her proje beyaz sayfayla başlamaz. Sıklıkla, yıllardır çalışan ama artık geliştirmesi zorlaşmış bir sistemi devralıyoruz. Böyle durumlarda ilk işimiz kod yazmak değil, haritayı çıkarmaktır: hangi modül neyi yapıyor, veriler nasıl akıyor, hangi bağımlılıklar güncelliğini yitirmiş, hangi kısımlar test edilmemiş, en sık hata nerede oluşuyor. Bu denetimin sonunda önceliklendirilmiş bir iyileştirme planı sunarız.
İyileştirmede tercihimiz, sistemi durdurup baştan yazmak yerine kademeli ilerlemektir. Önce riskli ve sık değişen bölümler test altına alınır, sonra iş mantığı katmanlara ayrılır, ardından yavaş sorgular ve güvenlik açıkları giderilir. Bu yaklaşım işletmenin çalışmaya devam etmesini sağlar; büyük yeniden yazım projelerinin klasik riski olan "yeni sistem bitene kadar eskisi de gelişmiyor" tuzağına düşülmez. Yalnızca teknik borç o kadar birikmişse ki her düzeltme yeni hata doğuruyorsa, gerekçelerini rakamlarla ortaya koyarak yeniden yazımı öneririz — ve bunu da modül modül, yayına alarak yaparız.
Backend Geliştirme Fiyatlarını Belirleyen Faktörler
Backend projelerinde fiyat, sayfa sayısıyla değil karmaşıklıkla ölçülür. Aynı görünen iki panel, arkalarındaki iş kuralları yüzünden bambaşka maliyetlere sahip olabilir. Teklifimizi etkileyen ana kalemler şunlardır:
- İş mantığının karmaşıklığı — Kural sayısı, onay akışları, hesaplama mantıkları, rol ve yetki çeşitliliği ile istisna durumların yoğunluğu doğrudan iş yüküne yansır.
- Veri modelinin büyüklüğü — Varlık sayısı, ilişkilerin derinliği, geçmiş veri saklama ihtiyacı ve raporlama beklentileri tasarım ve test süresini belirler.
- Entegrasyon sayısı — Ödeme, kargo, ERP, muhasebe, e-fatura, SMS veya harita gibi her dış sistem; kendi dokümantasyonu, test ortamı ve hata senaryolarıyla ayrı bir iş kalemidir.
- Mimari ve ölçek beklentisi — Tek örnekli bir kurulumla, yatay ölçeklenen ve kuyruk altyapısı içeren çok servisli bir sistem farklı efor gerektirir.
- Güvenlik ve uyumluluk gereksinimleri — Denetim kaydı, veri şifreleme, gelişmiş yetkilendirme ve mevzuat gereksinimleri ek geliştirme ve doğrulama süresi doğurur.
- Mevcut sistemin durumu — Devralınan projelerde kodun kalitesi, dokümantasyonun varlığı ve test kapsamı; iyileştirme maliyetini belirleyen en büyük değişkendir.
- Bakım ve destek kapsamı — Teslim sonrası izleme, güncelleme ve müdahale süresi taahhütleri ayrı bir hizmet kalemi olarak planlanır.
Süreç bizde şeffaf işler: analiz sonrasında kalem kalem yazılmış, kapsamı net bir teklif alırsınız. Kapsam dışı taleplerin nasıl fiyatlanacağı da baştan yazılır; proje ortasında sürpriz fatura çıkarmayı iş yapış biçimimize aykırı buluyoruz. Paketleri incelemek için planlar bölümüne göz atabilir ya da doğrudan arayarak projenize özel teklif isteyebilirsiniz.
Neden Marmaragen?
- 8+ yıl deneyim, 150+ proje: 2015'ten beri İstanbul Maltepe'den Türkiye geneline hizmet veriyoruz; 250'den fazla müşteriyle çalıştık.
- Dört yığında gerçek üretim tecrübesi: Node.js, Python, PHP ve .NET tarafında hepsini yayına almış bir ekip; teknoloji önerimiz elimizdeki tek alete göre değil, projenize göre şekillenir.
- Ölçeklenebilir mimari: Modüler yapı, kuyruk altyapısı ve olay tabanlı tasarımla bugünkü değil, büyüdüğünüz günkü ihtiyacınıza hazır sistemler kuruyoruz.
- Güvenlik baştan tasarımda: Kimlik doğrulama, yetki sınırları, girdi doğrulama ve oran sınırlama sonradan eklenen yamalar değil, ilk günün kararları.
- Otomatik yayın süreci: Docker ve CI/CD ile test edilmemiş kod üretime çıkmaz; geri alma yolu her zaman açıktır.
- Kod sizindir: Kaynak kodun tamamı depo erişimiyle teslim edilir; dilediğiniz zaman kendi ekibinize devredebilirsiniz.
- Uçtan uca tek muhatap: Arayüz, servis katmanı, barındırma ve güvenlik aynı ekipte; sorun çıktığında firmalar arasında top çevrilmez.