İçeriğe geç
İletişim
Günlük · 7 dk okuma

Merhaba Dünya: Backend Notları Yeniden Yayında

Ben Emre Çelen, Java ve Spring Boot ile çalışan bir backend developer'ım. Yıllar sonra yeniden yazmaya başlıyorum; bu blogda seni neler bekliyor, anlatayım.

Backend Developer
Koyu ızgara zemin üzerinde, petek dokulu ve yeşil ışık çizgili üç boyutlu "e" logosu. Yanında "Koda gizlenen gelecek, hayale çıkan yol." yazısı, Backend Developer rozeti ve Java, Kotlin, Spring Boot etiketleri.

KISACA

Emre Çelen; bankacılık ve mikroservis projelerinde Java, Kotlin ve Spring Boot ile çalışan bir backend developer. Backend Notları, emrecelen.com.tr'deki ilk blogundan yıllar sonra açtığı; backend, veritabanı ve dağıtık sistemler üzerine üretimde öğrendiklerini sade bir Türkçeyle anlattığı blog.

Her yazılımcının ilk programı bir Merhaba Dünya'dır. Benimki iki kez oldu: ilki 2021'de emrecelen.com.tr'de, ikincisi şimdi, tam burada.

Ben Emre Çelen. 4 yıldır Java, Kotlin ve Spring Boot ile backend tarafında çalışıyorum; son yıllarım çoğunlukla bankacılık projelerinde geçti. Bu blog, yani Backend Notları, üretimde öğrendiklerimi sade bir Türkçeyle yazacağım yer.

Kahveni al ☕, uzun bir aradan sonra sunucuyu birlikte ayağa kaldıralım:

~/backend-notlari — boot

systemctl start backend-notlari

  1. [ OK ]emrecelen.com.tr arşive alındı (2021 - 2022 · 87 yazı)
  2. [ OK ]Garanti BBVA, Digitopia ve Akbank deneyimi yüklendi
  3. [ OK ]Java · Kotlin · Spring Boot · PostgreSQL · Kafka bağlandı
  4. [ WARN ]Uptime kesintisi: 5 yıl. Olay raporuna git ↓
  5. [ OK ]Ses efektleri hazır (varsayılan: kapalı)
  6. [ OK ]Animasyonlar ısındı
  7. [ OK ]backend-notlari.service başladı · emrecelen.dev
  8. Here we go.

#Önce tanışalım

Kariyerimin büyük kısmı, küçük bir hatanın bile pahalıya patladığı yerlerde geçti:

  • Garanti BBVA Teknoloji: Rol ve yetkilendirme sistemlerinin modernizasyonunda çalıştım.
  • Digitopia: Kotlin ve Spring Boot ile gRPC, WebSocket ve olay güdümlü servisler geliştirdim.
  • OBSS Technology · Akbank: Bugün mobil bankacılık ekibinde Sigorta ve Ticari Kredi domainlerinde mikroservisler ve BFF katmanları yazıyorum.

İşin en sevdiğim tarafı hep aynıydı: karmaşık görünen bir problemi, bir kahve molasında anlatılabilecek kadar sadeleştirmek. Burada yapmaya çalışacağım şey de bu.

Uzun hâli, kullandığım teknolojiler ve kariyer çizelgesi Hakkımda sayfasında.

#Olay raporu: Blog neden yıllarca sessiz kaldı?

Backend'de bir şey ters gittiğinde suçlu aramayız; oturup bir postmortem yazarız. Ne oldu, neden oldu, bir daha olmasın diye ne yapıyoruz? Blogumun uzun sessizliğini de aynı şekilde raporlamak istedim. Biraz daha az ciddiyetle, söz.

OLAY #001Blog kesintisi
Çözüldü
Süre
4 yıl
Önem
SEV-3
Etki
0 yeni yazı. Notlar birikti, hiçbiri yayına çıkmadı.
Zaman çizelgesiUptime %43

2026 · yayında · Backend Notları yayında

#Özet

2021 ile 2022 arasında emrecelen.com.tr'de 87 yazı yazdım. Çoğu, o gün yeni öğrendiğim bir şeyin heyecanla tutulmuş notuydu: JavaFX Maven Projesi Nasıl Oluşturulur? Sonra bir gün yazmayı bıraktım. Site açık kaldı ama servis, tabiri caizse, sessizce durmuştu.

#Kök neden

Tek bir suçlu yok; birbirini besleyen üç sebep var:

  • Öğrenme hızı yazma hızını geçti. Bir konuyu yazmaya oturduğumda ben çoktan bir sonrakine geçmiş oluyordum.
  • Bunu zaten herkes biliyor hissi. Yeni öğrendiğim bir şeyi anlatmak her ay biraz daha gereksiz geldi. (Spoiler: )
  • İş yoğunluğu. Kariyerimin ilk yılları biraz koşturmacalı geçti; bir yandan yeni sorumluluklara adapte olmaya çalışırken bir yandan da yüksek lisans süreci başladı. İş, okul ve öğrenme arasında yazmak çoğu zaman listenin en altına kaldı. 🥺

#Ne öğrendik?

İlk yazılarım başlangıç seviyesindeydi ve bu gayet normaldi. Aradan geçen yıllarda ise üretimde yaşanan hatalar, yanlış varsayımlar, gerçek trafik altında ortaya çıkan problemler ve farklı projeler çok daha fazla şey öğretti. Bunların bir kısmı dokümantasyonda bulunuyor, bir kısmıysa ancak deneyerek ve bazen yanılarak öğreniliyor.

#Ne yazacağım?

Ben de burada hem nasıl yapılır içeriklerini ve projeleri, hem de işlerin nerede kırıldığını, neden kırıldığını ve geriye hangi derslerin kaldığını not edeceğim.

  1. 01NASILNasıl yapılırAdım adım anlatımlar ve projeler
  2. 02NEREDENerede kırıldı?Üretimdeki hata, yanlış varsayım
  3. 03NEDENNeden kırıldı?Kök neden ve onu besleyen koşullar
  4. 04DERSGeriye kalan dersBir dahaki sefere farklı yapacağımız şey

#Neden şimdi?

Sanırım yazmayı değil, yazmanın bende bıraktığı hissi özledim. Yeni bir şey öğrenip onu kendi cümlelerimle anlatmayı; belki hiç tanımadığım birinin aynı probleme takıldığında buradaki birkaç satır sayesinde yoluna devam edebilmesini… Bunun gerçekten birine faydası olup olmadığını çoğu zaman bilmeyeceğim. Ama ihtimali bile güzel. Bazen insanın yeniden başlaması için bundan fazlasına ihtiyacı olmuyor.

#Aksiyonlar

  • Yeni bir ev: emrecelen.dev
  • Notları ölçerek ve gerçek örneklerle anlatmak
  • Düzenli yayın ritmi: ayda iki yazı
  • Eski alan adını buraya yönlendirmek

#v1 → v2: Ne değişti?

Eski yazıları buraya taşımıyorum. Utandığımdan değil; o blog başka bir dönemin günlüğüydü ve öyle kalması daha güzel. Aradaki farkı en iyi bir diff anlatır:

blog.diffdiff
- alan adı : emrecelen.com.tr
+ alan adı : emrecelen.dev
- örnek    : "Java Interface Nedir?"
+ örnek    : "Transactional outbox ile çift yazma probleminden çıkış"
- soru     : "Bugün ne öğrendim?"
+ soru     : "Üretimde ne kırıldı, nasıl düzelttik?"
- altyapı  : WordPress
+ altyapı  : sıfırdan yazılmış, statik bir site
  dil      : Türkçe (değişmedi)

#Bu blog nasıl çalışıyor?

Bir backend'ci blog kurunca altyapıya biraz fazla kafa yoruyor, kabul. Kısaca: veritabanı yok, sunucuda çalışan kod yok. Her yazı git'te duran bir MDX dosyası. Site her yayında baştan derlenip düz HTML dosyalarına dönüşüyor. Sen bir sayfa açtığında hazır bir dosyayı okuyorsun; tarayıcına yalnızca etkileşimli parçaların JavaScript'i gidiyor.

Katmanlara tek tek bakmak istersen birine dokun:

KATMAN 1 / 6İçerik
  • MDX
  • git
  • zod

Yazılar bir veritabanında değil, git deposunda MDX dosyaları olarak duruyor. Her dosyanın başındaki bilgiler (başlık, tarih, kategori) zod şemalarıyla doğrulanıyor. Eksik ya da hatalı bir alan varsa build, Türkçe bir hata mesajıyla duruyor.

☕ Spring karşılığı: src/main/resources altındaki dosyalar + Bean Validation (@NotBlank, @Size)

#Seni neler bekliyor?

Bu siteyi yaparken en çok önemsediğim şey okumanın keyifli olmasıydı. Birkaç küçük sürpriz hazırladım; hepsi isteğe bağlı, hiçbiri yoluna çıkmıyor.

#Kulağına küçük notlar

Bir düğmeye bastığında, bir menü açtığında ya da bir şeyi kopyaladığında çok kısa sesler duyabilirsin. Varsayılan olarak kapalılar; açmak sana kalmış. İşin güzel tarafı ortada tek bir ses dosyası olmaması: her ses, tarayıcının WebAudio arayüzüyle o anda birkaç notadan üretiliyor.

Hepsini bu küçük piyanoda topladım. Piyano serbest çalma modunda açılıyor: tuşlar gerçek notalar, dokunabilir ya da klavyeden A'dan J'ye çalabilirsin. "Site sesleri"ne geçersen her tuş bu sitede duyduğun bir sesi çalıyor:

SES PİYANOSU
► HazırBeyaz tuşlar A S D F G H J, siyahlar W E T Y U. İpucu: A A G G H H G

0 KB ses dosyası · WebAudio ile anında üretiliyor

Beğendiysen üst menüdeki küçük ekolayzır düğmesiyle sesleri açık bırakabilirsin.

#Gözüne yol gösteren animasyonlar

Animasyonlar burada süs değil, yol gösterici: açılan bir panel nereden geldiğini, kapanan bir menü nereye gittiğini anlatıyor. Neredeyse hepsinde aynı eğriyi kullanıyorum: hızlı başlayıp yumuşakça oturan bir yay. Sitenin imza eğrisi cubic-bezier(.16, 1, .3, 1); sürenin ilk %30'unda yolun yaklaşık %88'ini tamamlıyor, kalan zamanı yerine oturmaya harcıyor.

Aşağıdaki stüdyoda bir eğri seçip oynat, zaman çizelgesini sürükleyip hareketi kare kare izle ya da tutamakları çekip kendi eğrini çiz:

HAREKET STÜDYOSU

Hızlı çıkar, yumuşakça oturur. Burada her yerde bu var.

Zamanlama eğrisi grafiğizaman →yol ↑Ok tuşlarıyla taşı: sağ ve sol zaman, yukarı ve aşağı yol. Shift ile büyük adım.

Sürenin ilk %30’unda tamamlanan yol: %88

cubic-bezier(.16, 1, .3, 1)

İşletim sisteminde "hareketi azalt" ayarı açıksa site bunu fark edip animasyonları kendiliğinden sadeleştiriyor. Bu yazının başındaki açılış sekansı bile o durumda tek seferde görünüyor.

#Parmaklarının ucundaki kolaylıklar

Okumayı kolaylaştıran beş küçük özellik var: hızlı arama, açık ya da koyu tema, okuma listesi, kaldığın yerden devam ve seç-alıntıla araç çubuğu. Hiçbiri hesap istemiyor.

  • Hızlı arama

    Herhangi bir sayfada kısayola bas; yazılar, kavramlar ve komutlar tek kutuda.
    CtrlK⌘K/
  • Açık ya da koyu

    Gözün hangisini seviyorsa. Seçmezsen site işletim sisteminin temasını izliyor.
  • Okuma listesi

    Bir yazıyı sonraya bırakmak için "Kaydet"e bas. Liste yalnızca senin tarayıcında tutuluyor.
  • Kaldığın yerden devam

    Yarım bıraktığın yazıya döndüğünde ana sayfa seni kaldığın bölüme götürüyor.
    Tercihler izniyle
  • Seç, alıntıla

    Bir cümleyi seçince küçük bir araç çubuğu çıkıyor: kopyala, bağlantısını al, paylaş ya da sitede ara. Hadi, bu cümleyi seçip dene.

#Backend Notları'nda hangi konular var?

Backend Notları'ndaki yazılar yedi kategoride toplanıyor: Backend, Veritabanı, Dağıtık Sistemler, DevOps, Mimari, Performans ve Günlük. Her kategorinin kendine özgü bir görünümü var: Backend bir API'nin rota tablosu, Veritabanı bir sorgu sonucu, Dağıtık Sistemler de Kafka partition'larına dağılmış mesajlar gibi listeleniyor.

  • Backend

    API ve servisler
    Rota tablosu
    HTTP sözleşmeleri, kuyruklar, thread modelleri.
  • Veritabanı

    Sorgu, index, veri modeli
    Sorgu sonucu
    Sorgu planları, index seçimi, MVCC ve migration.
  • Dağıtık Sistemler

    Mesaj, tutarlılık, dayanıklılık
    Partition akışı
    Kafka, outbox, saga, circuit breaker.
  • DevOps

    Build, test, deploy, gözlem
    Pipeline
    CI süresi, sıfır kesintili deploy, gözlemlenebilirlik.
  • Mimari

    Karar kayıtları
    Karar kayıtları
    Modüler monolit, hexagonal, CQRS; her yazı bir karar kaydı.
  • Performans

    Ölç, düzelt, tekrar ölç
    Benchmark
    N+1, bağlantı havuzu, GC duraklamaları; her yazı bir önce/sonra ölçümü.
  • Günlük

    Duyuru, çekiliş, geliştirme notları
    Günlük akışı
    Blogun kendisiyle ilgili duyurular ve geliştirme notları. Bu yazı da onlardan biri.

Bunların yanında iki küçük bölüm var. Nedir? sözlüğünde cache stampede, idempotency, N+1 gibi kavramlar adım adım anlatılıyor. İpucu sayfasında da gündelik işte zaman kazandıran tek satırlık komutlar var.

#Nasıl takip edilir?

Yeni yazılardan haberdar olmanın ve bana ulaşmanın en kısa yolları:

  • RSS: En kolay yol. rss.xml adresini okuyucuna ekle; hesap ya da e-posta gerekmiyor, yeni yazılar kendiliğinden düşüyor.
  • Sırada: Ana sayfadaki Sırada kutusunda üzerinde çalıştığım yazıları ve hangi aşamada olduklarını görebilirsin.
  • LinkedIn: Her yeni yazıyı LinkedIn (yeni sekmede açılır)'de de duyuruyorum.
  • İletişim: Bir konu önermek, bir hatayı yakalamak ya da sadece merhaba demek istersen iletişim sayfası her zaman açık. Her mesajı okuyorum.

Kesinti uzun sürdü ama veri kaybı yok: notlar birikti, sadece yayına alınmadı. Şimdi sıra onlarda. Terminal senin:

help

Görüşmek üzere.

Sık sorulanlar

Bankacılık ve mikroservis projelerinde Java, Kotlin ve Spring Boot ile çalışan bir backend developer. Bugün OBSS Technology'de, Akbank'ın mobil bankacılık ekibinde Sigorta ve Ticari Kredi domainlerinde çalışıyor.

Backend ve API tasarımı, veritabanı, dağıtık sistemler, DevOps, mimari ve performans. Yazıların yanında kısa kavram tanımları (Nedir?) ve tek satırlık terminal ipuçları da yayınlanıyor.

O blog, öğrenme dönemimin başlangıç seviyesindeki notlarıydı; bu yüzden yazılar yeni siteye taşınmadı. Yeni yazılar yalnızca emrecelen.dev'de yayınlanıyor.

Site Next.js 16 ile statik olarak üretiliyor. Yazılar git'teki MDX dosyalarında duruyor, stiller Linaria ile build anında düz CSS'e dönüşüyor. Veritabanı ve sunucuda çalışan kod yok; her sayfa hazır bir HTML dosyası.

Sesler varsayılan olarak kapalı. Üst menüdeki küçük ekolayzır düğmesiyle açıp kapatabilirsin; tercihini hatırlamamızı istersen çerez bandında "Tercihler"e izin ver.

RSS akışını (emrecelen.dev/rss.xml) okuyucuna ekleyebilir ya da ana sayfadaki "Sırada" kutusundan üzerinde çalıştığım yazıları takip edebilirsin.

İşine yaradıysa, ihtiyacı olan birine gönder.